├── .github ├── dependabot.yml └── workflows │ ├── gerrit-verify.yaml │ └── github2gerrit.yaml ├── .gitignore ├── .gitreview ├── .readthedocs.yml ├── INFO.yaml ├── applications ├── arbitratorreconciliation │ ├── api │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── yang │ │ │ └── arbitrator-reconcile.yang │ ├── impl │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── org │ │ │ │ └── opendaylight │ │ │ │ └── openflowplugin │ │ │ │ └── applications │ │ │ │ └── arbitratorreconciliation │ │ │ │ └── impl │ │ │ │ ├── ArbitratorReconciliationManagerImpl.java │ │ │ │ ├── DefaultUpgradeState.java │ │ │ │ └── UpgradeState.java │ │ │ └── yang │ │ │ └── upgrade-config.yang │ └── pom.xml ├── bulk-o-matic │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── opendaylight │ │ │ │ └── openflowplugin │ │ │ │ └── applications │ │ │ │ └── bulk │ │ │ │ └── o │ │ │ │ └── matic │ │ │ │ ├── BulkOMaticUtils.java │ │ │ │ ├── FlowCounter.java │ │ │ │ ├── FlowCounterMBean.java │ │ │ │ ├── FlowReader.java │ │ │ │ ├── FlowWriterConcurrent.java │ │ │ │ ├── FlowWriterDirectOFRpc.java │ │ │ │ ├── FlowWriterSequential.java │ │ │ │ ├── FlowWriterTxChain.java │ │ │ │ ├── SalBulkFlowRpcs.java │ │ │ │ └── TableWriter.java │ │ └── yang │ │ │ └── sal-bulk-flow.yang │ │ ├── site │ │ └── asciidoc │ │ │ └── bulk-o-matic.adoc │ │ └── test │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── applications │ │ └── bulk │ │ └── o │ │ └── matic │ │ ├── BulkOMaticUtilsTest.java │ │ ├── FlowReaderTest.java │ │ ├── FlowWriterConcurrentTest.java │ │ ├── FlowWriterDirectOFRpcTest.java │ │ ├── FlowWriterSequentialTest.java │ │ ├── FlowWriterTxChainTest.java │ │ ├── SalBulkFlowRpcsTest.java │ │ └── TableWriterTest.java ├── device-ownership-service │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── applications │ │ └── deviceownershipservice │ │ ├── DeviceOwnershipService.java │ │ └── impl │ │ └── DeviceOwnershipServiceImpl.java ├── forwardingrules-manager │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── opendaylight │ │ │ │ └── openflowplugin │ │ │ │ └── applications │ │ │ │ └── frm │ │ │ │ ├── ActionType.java │ │ │ │ ├── BundleMessagesCommiter.java │ │ │ │ ├── FlowCapableNodeConnectorCommitter.java │ │ │ │ ├── FlowNodeConnectorInventoryTranslator.java │ │ │ │ ├── FlowNodeReconciliation.java │ │ │ │ ├── ForwardingRulesCommiter.java │ │ │ │ ├── ForwardingRulesManager.java │ │ │ │ ├── ForwardingRulesProperty.java │ │ │ │ ├── NodeConfigurator.java │ │ │ │ ├── ReconciliationJMXAgent.java │ │ │ │ ├── ReconciliationJMXService.java │ │ │ │ ├── ReconciliationJMXServiceMBean.java │ │ │ │ ├── impl │ │ │ │ ├── AbstractListeningCommiter.java │ │ │ │ ├── AbstractNodeConnectorCommitter.java │ │ │ │ ├── BundleFlowForwarder.java │ │ │ │ ├── BundleGroupForwarder.java │ │ │ │ ├── DeviceMastership.java │ │ │ │ ├── DeviceMastershipManager.java │ │ │ │ ├── DevicesGroupRegistry.java │ │ │ │ ├── FlowForwarder.java │ │ │ │ ├── FlowNodeConnectorInventoryTranslatorImpl.java │ │ │ │ ├── FlowNodeReconciliationImpl.java │ │ │ │ ├── ForwardingRulesManagerImpl.java │ │ │ │ ├── GroupForwarder.java │ │ │ │ ├── MeterForwarder.java │ │ │ │ └── TableForwarder.java │ │ │ │ ├── nodeconfigurator │ │ │ │ ├── JobEntry.java │ │ │ │ ├── JobQueue.java │ │ │ │ └── NodeConfiguratorImpl.java │ │ │ │ ├── recovery │ │ │ │ ├── OpenflowServiceRecoveryHandler.java │ │ │ │ └── impl │ │ │ │ │ └── OpenflowServiceRecoveryHandlerImpl.java │ │ │ │ └── util │ │ │ │ └── FrmUtil.java │ │ ├── resources │ │ │ └── OSGI-INF │ │ │ │ └── blueprint │ │ │ │ └── forwardingrules-manager.xml │ │ └── yang │ │ │ ├── forwardingrules-manager-config.yang │ │ │ └── frm-reconciliation.yang │ │ └── test │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── applications │ │ └── frm │ │ └── impl │ │ ├── AbstractFRMTest.java │ │ ├── CapturingAddBundleMessages.java │ │ ├── CapturingAddFlow.java │ │ ├── CapturingAddGroup.java │ │ ├── CapturingAddMeter.java │ │ ├── CapturingControlBundle.java │ │ ├── CapturingGetActiveBundle.java │ │ ├── CapturingRemoveFlow.java │ │ ├── CapturingRemoveGroup.java │ │ ├── CapturingRemoveMeter.java │ │ ├── CapturingUpdateFlow.java │ │ ├── CapturingUpdateGroup.java │ │ ├── CapturingUpdateMeter.java │ │ ├── CapturingUpdateTable.java │ │ ├── DeviceMastershipManagerTest.java │ │ ├── DeviceMastershipTest.java │ │ ├── FlowListenerTest.java │ │ ├── GroupListenerTest.java │ │ ├── MeterListenerTest.java │ │ ├── NodeListenerTest.java │ │ └── TableFeaturesListenerTest.java ├── forwardingrules-sync │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowplugin │ │ │ └── applications │ │ │ └── frsync │ │ │ ├── ForwardingRulesAddCommitter.java │ │ │ ├── ForwardingRulesCommitter.java │ │ │ ├── ForwardingRulesRemoveCommitter.java │ │ │ ├── ForwardingRulesUpdateCommitter.java │ │ │ ├── NodeListener.java │ │ │ ├── SemaphoreKeeper.java │ │ │ ├── SyncPlanPushStrategy.java │ │ │ ├── SyncReactor.java │ │ │ ├── dao │ │ │ ├── FlowCapableNodeCachedDao.java │ │ │ ├── FlowCapableNodeDao.java │ │ │ ├── FlowCapableNodeOdlDao.java │ │ │ └── FlowCapableNodeSnapshotDao.java │ │ │ ├── impl │ │ │ ├── AbstractFrmSyncListener.java │ │ │ ├── ForwardingRulesSyncProvider.java │ │ │ ├── SimplifiedConfigListener.java │ │ │ ├── SimplifiedOperationalListener.java │ │ │ ├── SyncReactorClusterDecorator.java │ │ │ ├── SyncReactorFutureDecorator.java │ │ │ ├── SyncReactorFutureZipDecorator.java │ │ │ ├── SyncReactorGuardDecorator.java │ │ │ ├── SyncReactorImpl.java │ │ │ ├── SyncReactorRetryDecorator.java │ │ │ ├── clustering │ │ │ │ ├── DeviceMastership.java │ │ │ │ └── DeviceMastershipManager.java │ │ │ └── strategy │ │ │ │ ├── FlowForwarder.java │ │ │ │ ├── GroupForwarder.java │ │ │ │ ├── MeterForwarder.java │ │ │ │ ├── SyncPlanPushStrategyFlatBatchImpl.java │ │ │ │ ├── SyncPlanPushStrategyIncrementalImpl.java │ │ │ │ ├── SynchronizationDiffInput.java │ │ │ │ └── TableForwarder.java │ │ │ └── util │ │ │ ├── CrudCounts.java │ │ │ ├── FlowCapableNodeLookups.java │ │ │ ├── FlowDescriptor.java │ │ │ ├── FxChainUtil.java │ │ │ ├── ItemSyncBox.java │ │ │ ├── ModificationUtil.java │ │ │ ├── PathUtil.java │ │ │ ├── ReconcileUtil.java │ │ │ ├── ReconciliationRegistry.java │ │ │ ├── SemaphoreKeeperGuavaImpl.java │ │ │ ├── SyncCrudCounters.java │ │ │ └── SyncupEntry.java │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowplugin │ │ │ └── applications │ │ │ └── frsync │ │ │ ├── impl │ │ │ ├── DSInputFactory.java │ │ │ ├── ForwardingRulesSyncProviderTest.java │ │ │ ├── SimplifiedConfigListenerTest.java │ │ │ ├── SimplifiedOperationalListenerTest.java │ │ │ ├── SyncReactorClusterDecoratorTest.java │ │ │ ├── SyncReactorFutureZipDecoratorTest.java │ │ │ ├── SyncReactorGuardDecoratorTest.java │ │ │ ├── SyncReactorImplTest.java │ │ │ ├── SyncReactorRetryDecoratorTest.java │ │ │ ├── clustering │ │ │ │ ├── DeviceMastershipManagerTest.java │ │ │ │ └── DeviceMastershipTest.java │ │ │ └── strategy │ │ │ │ ├── DiffInputFactory.java │ │ │ │ ├── FlowForwarderTest.java │ │ │ │ ├── GroupForwarderTest.java │ │ │ │ ├── MeterForwarderTest.java │ │ │ │ ├── SyncPlanPushStrategyFlatBatchImplTest.java │ │ │ │ ├── SyncPlanPushStrategyIncrementalImplTest.java │ │ │ │ └── TableForwarderTest.java │ │ │ └── util │ │ │ ├── ReconcileUtilTest.java │ │ │ ├── ReconciliationRegistryTest.java │ │ │ └── SemaphoreKeeperGuavaImplTest.java │ │ └── resources │ │ └── log4j.xml ├── lldp-speaker │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── opendaylight │ │ │ │ └── openflowplugin │ │ │ │ └── applications │ │ │ │ └── lldpspeaker │ │ │ │ ├── LLDPSpeaker.java │ │ │ │ ├── LLDPUtil.java │ │ │ │ ├── NodeConnectorEventsObserver.java │ │ │ │ └── NodeConnectorInventoryEventTranslator.java │ │ ├── resources │ │ │ └── OSGI-INF │ │ │ │ └── blueprint │ │ │ │ └── lldp-speaker.xml │ │ └── yang │ │ │ ├── lldp-speaker-config.yang │ │ │ └── lldp-speaker.yang │ │ └── test │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── applications │ │ └── lldpspeaker │ │ ├── LLDPSpeakerTest.java │ │ ├── NodeConnectorInventoryEventTranslatorTest.java │ │ └── TestUtils.java ├── of-switch-config-pusher │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowplugin │ │ │ └── openflow │ │ │ └── ofswitch │ │ │ └── config │ │ │ └── DefaultConfigPusher.java │ │ └── test │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── openflow │ │ └── ofswitch │ │ └── config │ │ └── DefaultConfigPusherTest.java ├── pom.xml ├── reconciliation-framework │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── applications │ │ └── reconciliation │ │ ├── NotificationRegistration.java │ │ ├── ReconciliationManager.java │ │ ├── ReconciliationNotificationListener.java │ │ ├── cli │ │ └── GetRegisteredServices.java │ │ └── impl │ │ ├── ReconciliationManagerImpl.java │ │ └── ReconciliationServiceDelegate.java ├── southbound-cli │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowplugin │ │ │ └── applications │ │ │ └── southboundcli │ │ │ ├── DefaultDpnTracker.java │ │ │ ├── DefaultReconcileService.java │ │ │ ├── DpnTracker.java │ │ │ ├── ReconcileService.java │ │ │ ├── alarm │ │ │ ├── NodeReconciliationAlarm.java │ │ │ └── NodeReconciliationAlarmMBean.java │ │ │ ├── cli │ │ │ ├── GetAllNodesCommand.java │ │ │ ├── GetFlowGroupCacheCommand.java │ │ │ ├── GetReconciliationStateCommand.java │ │ │ ├── ReconcileCommand.java │ │ │ ├── ReconciliationCountCommand.java │ │ │ └── ShowNodeCommand.java │ │ │ └── util │ │ │ ├── OFNode.java │ │ │ └── ShellUtil.java │ │ └── yang │ │ └── reconciliation.yang ├── table-miss-enforcer │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowplugin │ │ │ └── applications │ │ │ └── tablemissenforcer │ │ │ └── LLDPPacketPuntEnforcer.java │ │ └── test │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── applications │ │ └── tablemissenforcer │ │ └── LLDPDataTreeChangeListenerTest.java ├── topology-lldp-discovery │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── opendaylight │ │ │ │ └── openflowplugin │ │ │ │ └── applications │ │ │ │ └── topology │ │ │ │ └── lldp │ │ │ │ ├── LLDPActivator.java │ │ │ │ ├── LLDPDiscoveryListener.java │ │ │ │ ├── LLDPLinkAger.java │ │ │ │ ├── TopologyLLDPDiscoveryProperty.java │ │ │ │ └── utils │ │ │ │ └── LLDPDiscoveryUtils.java │ │ ├── resources │ │ │ └── OSGI-INF │ │ │ │ └── blueprint │ │ │ │ └── topology-lldp-discovery.xml │ │ └── yang │ │ │ └── topology-lldp-discovery-config.yang │ │ └── test │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── applications │ │ └── topology │ │ └── lldp │ │ ├── LLDPLinkAgerTest.java │ │ └── utils │ │ └── LLDPDiscoveryUtilsTest.java └── topology-manager │ ├── pom.xml │ └── src │ ├── main │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── applications │ │ └── topology │ │ └── manager │ │ ├── DataTreeChangeListenerImpl.java │ │ ├── FlowCapableNodeMapping.java │ │ ├── FlowCapableTopologyExporter.java │ │ ├── FlowCapableTopologyProvider.java │ │ ├── NodeChangeListenerImpl.java │ │ ├── OperationProcessor.java │ │ ├── TerminationPointChangeListenerImpl.java │ │ ├── TopologyManagerUtil.java │ │ └── TopologyOperation.java │ └── test │ ├── java │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── applications │ │ └── topology │ │ └── manager │ │ ├── DataTreeChangeListenerBase.java │ │ ├── FlowCapableTopologyExporterTest.java │ │ ├── NodeChangeListenerImplTest.java │ │ ├── TerminationPointChangeListenerImplTest.java │ │ └── TestUtils.java │ └── resources │ └── log4j.xml ├── artifacts └── pom.xml ├── distribution └── karaf │ └── pom.xml ├── docs ├── _static │ └── logo.png ├── conf.py ├── conf.yaml ├── devs │ ├── index.rst │ ├── library.rst │ └── plugin.rst ├── favicon.ico ├── images │ ├── 500px-UdpChannelPipeline.png │ ├── 800px-Extensibility.png │ ├── 800px-Extensibility2.png │ ├── Library_lifecycle.png │ ├── odl-ofp-add-flow.png │ ├── odl-ofp-feature-tree.png │ ├── odl-ofp-handshake.png │ ├── odl-ofp-ofplugin-debug-stats.png │ ├── odl-ofp-session-establishment.jpg │ └── plugin_arch.png ├── index.rst ├── requirements.txt ├── specs │ ├── arbitrator-reconciliation.rst │ ├── bundle-reconciliation.rst │ ├── device-connection-rate-limiter.rst │ ├── group-add-mod.rst │ ├── index.rst │ ├── openflowplugin-event-logger.rst │ ├── reconciliation-cli.rst │ ├── reconciliation-framework.rst │ └── southbound-cli.rst ├── testplans │ ├── Bundles-Resync.rst │ ├── index.rst │ ├── testplan-template.rst │ └── topologies │ │ ├── default-topology.txt │ │ └── dummy-topology.txt └── users │ ├── architecture.rst │ ├── flow-examples.rst │ ├── index.rst │ ├── installation.rst │ └── operation.rst ├── drop-test-karaf ├── pom.xml └── src │ └── main │ └── java │ └── org │ └── opendaylight │ └── openflowplugin │ └── droptestkaraf │ ├── ClearDropStatsCommandProvider.java │ ├── DropAllPacketsCommandProvider.java │ ├── DropAllPacketsCompleter.java │ ├── DropAllPacketsRpcCommandProvider.java │ └── ShowDropStatsCommandProvider.java ├── extension ├── openflowjava-extension-eric │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── opendaylight │ │ │ │ └── openflowjava │ │ │ │ └── eric │ │ │ │ ├── EricExtensionCodecRegistratorImpl.java │ │ │ │ ├── EricExtensionsRegistrator.java │ │ │ │ ├── api │ │ │ │ ├── EricConstants.java │ │ │ │ └── EricExtensionCodecRegistrator.java │ │ │ │ └── codec │ │ │ │ └── match │ │ │ │ ├── AbstractMatchCodec.java │ │ │ │ ├── EricHeader.java │ │ │ │ ├── Icmpv6NDOptionsTypeCodec.java │ │ │ │ └── Icmpv6NDReservedCodec.java │ │ ├── resources │ │ │ └── org │ │ │ │ └── opendaylight │ │ │ │ └── blueprint │ │ │ │ └── openflowjava-extension-eric.xml │ │ └── yang │ │ │ └── eric-match.yang │ │ └── test │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowjava │ │ └── eric │ │ ├── EricExtensionCodecRegistratorImplTest.java │ │ ├── EricExtensionsRegistratorTest.java │ │ └── codec │ │ └── match │ │ ├── EricHeaderTest.java │ │ ├── Icmpv6NDOptionsTypeCodecTest.java │ │ └── Icmpv6NDReservedCodecTest.java ├── openflowjava-extension-nicira-api │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowjava │ │ │ └── nx │ │ │ └── api │ │ │ ├── NiciraActionDeserializerKey.java │ │ │ ├── NiciraActionSerializerKey.java │ │ │ ├── NiciraConstants.java │ │ │ ├── NiciraExtensionCodecRegistrator.java │ │ │ └── NiciraUtil.java │ │ └── test │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowjava │ │ └── nx │ │ └── api │ │ ├── NiciraActionDeserializerKeyTest.java │ │ └── NiciraActionSerializerKeyTest.java ├── openflowjava-extension-nicira │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── opendaylight │ │ │ │ └── openflowjava │ │ │ │ └── nx │ │ │ │ ├── NiciraExtensionCodecRegistratorImpl.java │ │ │ │ ├── NiciraExtensionsRegistrator.java │ │ │ │ └── codec │ │ │ │ ├── action │ │ │ │ ├── AbstractActionCodec.java │ │ │ │ ├── ActionDeserializer.java │ │ │ │ ├── ConntrackCodec.java │ │ │ │ ├── CtClearCodec.java │ │ │ │ ├── DecNshTtlCodec.java │ │ │ │ ├── DecapCodec.java │ │ │ │ ├── EncapCodec.java │ │ │ │ ├── FinTimeoutCodec.java │ │ │ │ ├── LearnCodec.java │ │ │ │ ├── LearnCodecUtil.java │ │ │ │ ├── MultipathCodec.java │ │ │ │ ├── NiciraActionCodecs.java │ │ │ │ ├── OutputReg2Codec.java │ │ │ │ ├── OutputRegCodec.java │ │ │ │ ├── RegLoad2Codec.java │ │ │ │ ├── RegLoadCodec.java │ │ │ │ ├── RegMoveCodec.java │ │ │ │ └── ResubmitCodec.java │ │ │ │ └── match │ │ │ │ ├── AbstractExperimenterMatchCodec.java │ │ │ │ ├── AbstractMatchCodec.java │ │ │ │ ├── AbstractNshcCodec.java │ │ │ │ ├── AbstractRegCodec.java │ │ │ │ ├── ArpOpCodec.java │ │ │ │ ├── ArpShaCodec.java │ │ │ │ ├── ArpSpaCodec.java │ │ │ │ ├── ArpThaCodec.java │ │ │ │ ├── ArpTpaCodec.java │ │ │ │ ├── CtMarkCodec.java │ │ │ │ ├── CtStateCodec.java │ │ │ │ ├── CtTpDstCodec.java │ │ │ │ ├── CtTpSrcCodec.java │ │ │ │ ├── CtZoneCodec.java │ │ │ │ ├── EthDstCodec.java │ │ │ │ ├── EthSrcCodec.java │ │ │ │ ├── EthTypeCodec.java │ │ │ │ ├── IcmpTypeCodec.java │ │ │ │ ├── InPortCodec.java │ │ │ │ ├── IpDstCodec.java │ │ │ │ ├── IpSrcCodec.java │ │ │ │ ├── Ipv6DstCodec.java │ │ │ │ ├── Ipv6SrcCodec.java │ │ │ │ ├── MetadataCodec.java │ │ │ │ ├── MplsLabelCodec.java │ │ │ │ ├── NiciraMatchCodecs.java │ │ │ │ ├── NshFlagsCodec.java │ │ │ │ ├── NshMdtypeCodec.java │ │ │ │ ├── NshNpCodec.java │ │ │ │ ├── NshTtlCodec.java │ │ │ │ ├── Nshc1Codec.java │ │ │ │ ├── Nshc2Codec.java │ │ │ │ ├── Nshc3Codec.java │ │ │ │ ├── Nshc4Codec.java │ │ │ │ ├── NsiCodec.java │ │ │ │ ├── NspCodec.java │ │ │ │ ├── NxmHeader.java │ │ │ │ ├── PktMarkCodec.java │ │ │ │ ├── Reg0Codec.java │ │ │ │ ├── Reg1Codec.java │ │ │ │ ├── Reg2Codec.java │ │ │ │ ├── Reg3Codec.java │ │ │ │ ├── Reg4Codec.java │ │ │ │ ├── Reg5Codec.java │ │ │ │ ├── Reg6Codec.java │ │ │ │ ├── Reg7Codec.java │ │ │ │ ├── TcpDstCodec.java │ │ │ │ ├── TcpSrcCodec.java │ │ │ │ ├── TunIdCodec.java │ │ │ │ ├── TunIpv4DstCodec.java │ │ │ │ ├── TunIpv4SrcCodec.java │ │ │ │ ├── UdpDstCodec.java │ │ │ │ └── UdpSrcCodec.java │ │ └── yang │ │ │ ├── nicira-action.yang │ │ │ └── nicira-match.yang │ │ └── test │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowjava │ │ └── nx │ │ ├── NiciraExtensionCodecRegistratorImplTest.java │ │ ├── NiciraExtensionsRegistratorTest.java │ │ └── codec │ │ ├── action │ │ ├── AbstractActionCodecTest.java │ │ ├── ActionDeserializerTest.java │ │ ├── ConntrackCodecTest.java │ │ ├── CtClearCodecTest.java │ │ ├── DecNshTtlCodecTest.java │ │ ├── DecapCodecTest.java │ │ ├── EncapCodecTest.java │ │ ├── FinTimeoutCodecTest.java │ │ ├── LearnCodecTest.java │ │ ├── MultipathCodecTest.java │ │ ├── OutputReg2CodecTest.java │ │ ├── OutputRegCodecTest.java │ │ ├── RegLoad2CodecTest.java │ │ ├── RegLoadCodecTest.java │ │ ├── RegMoveCodecTest.java │ │ ├── ResubmitCodecTest.java │ │ └── TestsCodecStub.java │ │ └── match │ │ ├── AbstractExperimenterMatchCodecTest.java │ │ ├── AbstractNshcCodecTest.java │ │ ├── ArpOpCodecTest.java │ │ ├── ArpShaCodecTest.java │ │ ├── ArpSpaCodecTest.java │ │ ├── ArpThaCodecTest.java │ │ ├── ArpTpaCodecTest.java │ │ ├── CtStateCodecTest.java │ │ ├── CtTpDstCodecTest.java │ │ ├── CtTpSrcCodecTest.java │ │ ├── CtZoneCodecTest.java │ │ ├── EthDstCodecTest.java │ │ ├── EthSrcCodecTest.java │ │ ├── EthTypeCodecTest.java │ │ ├── IcmpTypeCodecTest.java │ │ ├── IpDstCodecTest.java │ │ ├── IpSrcCodecTest.java │ │ ├── Ipv6DstCodecTest.java │ │ ├── Ipv6SrcCodecTest.java │ │ ├── MetadataCodecTest.java │ │ ├── NshFlagsCodecTest.java │ │ ├── NshMdtypeCodecTest.java │ │ ├── NshNpCodecTest.java │ │ ├── NshTtlCodecTest.java │ │ ├── NsiCodecTest.java │ │ ├── NspCodecTest.java │ │ ├── NxmHeaderTest.java │ │ ├── PktMarkCodecTest.java │ │ ├── Reg0CodecTest.java │ │ ├── Reg1CodecTest.java │ │ ├── Reg2CodecTest.java │ │ ├── Reg3CodecTest.java │ │ ├── Reg4CodecTest.java │ │ ├── Reg5CodecTest.java │ │ ├── Reg6CodecTest.java │ │ ├── Reg7CodecTest.java │ │ ├── TcpDstCodecTest.java │ │ ├── TcpSrcCodecTest.java │ │ ├── TunIdCodecTest.java │ │ ├── TunIpv4DstCodecTest.java │ │ ├── TunIpv4SrcCodecTest.java │ │ ├── UdpDstCodecTest.java │ │ └── UdpSrcCodecTest.java ├── openflowplugin-extension-api │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── opendaylight │ │ │ │ └── openflowplugin │ │ │ │ └── extension │ │ │ │ └── api │ │ │ │ ├── AugmentTuple.java │ │ │ │ ├── AugmentationGroupingResolver.java │ │ │ │ ├── ConverterExtensionKey.java │ │ │ │ ├── ConverterMessageToOFJava.java │ │ │ │ ├── ConvertorActionFromOFJava.java │ │ │ │ ├── ConvertorActionToOFJava.java │ │ │ │ ├── ConvertorData.java │ │ │ │ ├── ConvertorFromOFJava.java │ │ │ │ ├── ConvertorMessageFromOFJava.java │ │ │ │ ├── ConvertorToOFJava.java │ │ │ │ ├── ExtensionAugment.java │ │ │ │ ├── ExtensionConverterProviderKeeper.java │ │ │ │ ├── ExtensionConverterRegistrator.java │ │ │ │ ├── ExtensionConvertorData.java │ │ │ │ ├── GroupingLooseResolver.java │ │ │ │ ├── GroupingResolver.java │ │ │ │ ├── OpenFlowPluginExtensionRegistratorProvider.java │ │ │ │ ├── TypeVersionKey.java │ │ │ │ ├── core │ │ │ │ ├── extension │ │ │ │ │ ├── ExtensionConverterManager.java │ │ │ │ │ └── ExtensionConverterProvider.java │ │ │ │ └── session │ │ │ │ │ └── ExtensionSessionManager.java │ │ │ │ ├── exception │ │ │ │ ├── ConversionException.java │ │ │ │ ├── ConverterNotFoundException.java │ │ │ │ └── ExperimenterConversionException.java │ │ │ │ └── path │ │ │ │ ├── ActionPath.java │ │ │ │ ├── AugmentationPath.java │ │ │ │ ├── MatchPath.java │ │ │ │ └── MessagePath.java │ │ └── yang │ │ │ ├── onf-extensions.yang │ │ │ ├── openflowplugin-experimenter-types.yang │ │ │ ├── openflowplugin-extension-general.yang │ │ │ ├── sal-bundle.yang │ │ │ ├── sal-experimenter-message.yang │ │ │ └── sal-experimenter-mp-message.yang │ │ └── test │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── extension │ │ └── api │ │ ├── ConverterExtensionActionKeyTest.java │ │ ├── ConverterExtensionMatchKeyTest.java │ │ ├── GroupingLooseResolverTest.java │ │ ├── GroupingResolverTest.java │ │ ├── SetFieldExtensionTest.java │ │ └── TypeVersionKeyTest.java ├── openflowplugin-extension-eric │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── opendaylight │ │ │ │ └── openflowplugin │ │ │ │ └── extension │ │ │ │ └── vendor │ │ │ │ └── eric │ │ │ │ ├── EricExtensionProvider.java │ │ │ │ └── convertor │ │ │ │ ├── CodecPreconditionException.java │ │ │ │ └── match │ │ │ │ ├── Icmpv6NDOptionsTypeConvertor.java │ │ │ │ ├── Icmpv6NDReservedConvertor.java │ │ │ │ └── MatchUtil.java │ │ ├── resources │ │ │ └── org │ │ │ │ └── opendaylight │ │ │ │ └── blueprint │ │ │ │ └── openflowplugin-extension-eric.xml │ │ └── yang │ │ │ └── openflowplugin-extension-eric-match.yang │ │ └── test │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── extension │ │ └── vendor │ │ └── eric │ │ └── convertor │ │ └── match │ │ ├── Icmpv6NDOptionsTypeConvertorTest.java │ │ └── Icmpv6NDReservedConvertorTest.java ├── openflowplugin-extension-nicira │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── opendaylight │ │ │ │ └── openflowplugin │ │ │ │ └── extension │ │ │ │ └── vendor │ │ │ │ └── nicira │ │ │ │ ├── NiciraExtensionProvider.java │ │ │ │ └── convertor │ │ │ │ ├── CodecPreconditionException.java │ │ │ │ ├── IpConverter.java │ │ │ │ ├── action │ │ │ │ ├── ActionUtil.java │ │ │ │ ├── ConntrackConvertor.java │ │ │ │ ├── CtClearConvertor.java │ │ │ │ ├── DecNshTtlConvertor.java │ │ │ │ ├── DecapConvertor.java │ │ │ │ ├── EncapConvertor.java │ │ │ │ ├── FieldChoiceResolver.java │ │ │ │ ├── FinTimeoutConvertor.java │ │ │ │ ├── LearnConvertor.java │ │ │ │ ├── LearnConvertorUtil.java │ │ │ │ ├── MultipathConvertor.java │ │ │ │ ├── OutputReg2Convertor.java │ │ │ │ ├── OutputRegConvertor.java │ │ │ │ ├── OutputRegConvertorProxy.java │ │ │ │ ├── RegLoad2Convertor.java │ │ │ │ ├── RegLoadConvertor.java │ │ │ │ ├── RegLoadConvertorProxy.java │ │ │ │ ├── RegMoveConvertor.java │ │ │ │ └── ResubmitConvertor.java │ │ │ │ └── match │ │ │ │ ├── ArpOpConvertor.java │ │ │ │ ├── ArpShaConvertor.java │ │ │ │ ├── ArpSpaConvertor.java │ │ │ │ ├── ArpThaConvertor.java │ │ │ │ ├── ArpTpaConvertor.java │ │ │ │ ├── CtMarkConvertor.java │ │ │ │ ├── CtStateConvertor.java │ │ │ │ ├── CtTpDstConvertor.java │ │ │ │ ├── CtTpSrcConvertor.java │ │ │ │ ├── CtZoneConvertor.java │ │ │ │ ├── EthDstConvertor.java │ │ │ │ ├── EthSrcConvertor.java │ │ │ │ ├── EthTypeConvertor.java │ │ │ │ ├── MatchUtil.java │ │ │ │ ├── NshFlagsConvertor.java │ │ │ │ ├── NshMdtypeConvertor.java │ │ │ │ ├── NshNpConvertor.java │ │ │ │ ├── NshTtlConvertor.java │ │ │ │ ├── Nshc1Convertor.java │ │ │ │ ├── Nshc2Convertor.java │ │ │ │ ├── Nshc3Convertor.java │ │ │ │ ├── Nshc4Convertor.java │ │ │ │ ├── NsiConvertor.java │ │ │ │ ├── NspConvertor.java │ │ │ │ ├── NxmInPortConvertor.java │ │ │ │ ├── PktMarkConvertor.java │ │ │ │ ├── RegConvertor.java │ │ │ │ ├── TcpDstConvertor.java │ │ │ │ ├── TcpSrcConvertor.java │ │ │ │ ├── TunIPv4DstConvertor.java │ │ │ │ ├── TunIPv4SrcConvertor.java │ │ │ │ ├── TunIdConvertor.java │ │ │ │ ├── UdpDstConvertor.java │ │ │ │ └── UdpSrcConvertor.java │ │ └── yang │ │ │ ├── openflowplugin-extension-nicira-action.yang │ │ │ └── openflowplugin-extension-nicira-match.yang │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowplugin │ │ │ └── extension │ │ │ └── vendor │ │ │ └── nicira │ │ │ ├── NiciraExtensionProviderTest.java │ │ │ └── convertor │ │ │ ├── IpConverterTest.java │ │ │ ├── MatchUtilTest.java │ │ │ ├── action │ │ │ ├── ConntrackConvertorTest.java │ │ │ ├── CtClearConvertorTest.java │ │ │ ├── DecNshTtlConvertorTest.java │ │ │ ├── DecapConvertorTest.java │ │ │ ├── EncapConvertorTest.java │ │ │ ├── FieldChoiceResolverTest.java │ │ │ ├── FinTimeoutConvertorTest.java │ │ │ ├── MultipathConvertorTest.java │ │ │ ├── OutputReg2ConvertorTest.java │ │ │ ├── OutputRegConvertorTest.java │ │ │ ├── RegLoad2ConvertorTest.java │ │ │ ├── RegLoadConvertorTest.java │ │ │ ├── RegMoveConvertorTest.java │ │ │ └── ResubmitConvertorTest.java │ │ │ └── match │ │ │ ├── ArpOpConvertorTest.java │ │ │ ├── ArpShaConvertorTest.java │ │ │ ├── ArpSpaConvertorTest.java │ │ │ ├── ArpThaConvertorTest.java │ │ │ ├── ArpTpaConvertorTest.java │ │ │ ├── CtStateConvertorTest.java │ │ │ ├── CtZoneConvertorTest.java │ │ │ ├── EthDstConvertorTest.java │ │ │ ├── EthSrcConvertorTest.java │ │ │ ├── EthTypeConvertorTest.java │ │ │ ├── NshFlagsConvertorTest.java │ │ │ ├── NshMdtypeConvertorTest.java │ │ │ ├── NshNpConvertorTest.java │ │ │ ├── NshTtlConvertorTest.java │ │ │ ├── Nshc1ConvertorTest.java │ │ │ ├── Nshc2ConvertorTest.java │ │ │ ├── Nshc3ConvertorTest.java │ │ │ ├── Nshc4ConvertorTest.java │ │ │ ├── NsiConvertorTest.java │ │ │ ├── NspConvertorTest.java │ │ │ ├── TcpDstConvertorTest.java │ │ │ ├── TcpSrcConvertorTest.java │ │ │ ├── TunIPv4DstConvertorTest.java │ │ │ ├── TunIPv4SrcConvertorTest.java │ │ │ ├── TunIdConvertorTest.java │ │ │ ├── UdpDstConvertorTest.java │ │ │ └── UdpSrcConvertorTest.java │ │ └── resources │ │ └── log4j.xml ├── openflowplugin-extension-onf │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowplugin │ │ │ └── extension │ │ │ └── onf │ │ │ ├── OnfConstants.java │ │ │ ├── OnfExtensionProvider.java │ │ │ ├── converter │ │ │ ├── BundleAddMessageConverter.java │ │ │ └── BundleControlConverter.java │ │ │ ├── deserializer │ │ │ ├── BundleControlFactory.java │ │ │ └── OnfExperimenterErrorFactory.java │ │ │ └── serializer │ │ │ ├── AbstractBundleMessageFactory.java │ │ │ ├── BundleAddMessageFactory.java │ │ │ └── BundleControlFactory.java │ │ └── test │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── extension │ │ └── onf │ │ ├── BundleTestUtils.java │ │ ├── ByteBufUtils.java │ │ ├── OnfExtensionProviderTest.java │ │ ├── converter │ │ ├── BundleAddMessageConverterTest.java │ │ └── BundleControlConverterTest.java │ │ ├── deserializer │ │ ├── BundleControlFactoryTest.java │ │ └── OnfExperimenterErrorFactoryTest.java │ │ └── serializer │ │ ├── AbstractBundleMessageFactoryTest.java │ │ ├── BundleAddMessageFactoryTest.java │ │ └── BundleControlFactoryTest.java ├── pom.xml └── test-extension │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── extension │ │ └── test │ │ └── Test.java │ └── yang │ └── test.yang ├── features ├── features-openflowplugin │ └── pom.xml ├── odl-openflowjava-protocol │ ├── pom.xml │ └── src │ │ └── main │ │ └── feature │ │ └── feature.xml ├── odl-openflowplugin-app-arbitratorreconciliation │ └── pom.xml ├── odl-openflowplugin-app-bulk-o-matic │ └── pom.xml ├── odl-openflowplugin-app-config-pusher │ └── pom.xml ├── odl-openflowplugin-app-forwardingrules-manager │ └── pom.xml ├── odl-openflowplugin-app-forwardingrules-sync │ └── pom.xml ├── odl-openflowplugin-app-lldp-speaker │ └── pom.xml ├── odl-openflowplugin-app-reconciliation-framework │ └── pom.xml ├── odl-openflowplugin-app-southbound-cli │ └── pom.xml ├── odl-openflowplugin-app-table-miss-enforcer │ └── pom.xml ├── odl-openflowplugin-app-topology-lldp-discovery │ └── pom.xml ├── odl-openflowplugin-app-topology-manager │ └── pom.xml ├── odl-openflowplugin-app-topology │ └── pom.xml ├── odl-openflowplugin-drop-test │ └── pom.xml ├── odl-openflowplugin-eric-extensions │ ├── pom.xml │ └── src │ │ └── main │ │ └── features │ │ └── features.xml ├── odl-openflowplugin-flow-services-rest │ ├── pom.xml │ └── src │ │ └── main │ │ └── feature │ │ └── feature.xml ├── odl-openflowplugin-flow-services │ └── pom.xml ├── odl-openflowplugin-libraries │ ├── pom.xml │ └── src │ │ └── main │ │ └── feature │ │ └── feature.xml ├── odl-openflowplugin-nsf-model │ ├── pom.xml │ └── src │ │ └── main │ │ └── feature │ │ └── feature.xml ├── odl-openflowplugin-nxm-extensions │ ├── pom.xml │ └── src │ │ └── main │ │ └── features │ │ └── features.xml ├── odl-openflowplugin-onf-extensions │ └── pom.xml ├── odl-openflowplugin-southbound │ ├── pom.xml │ └── src │ │ └── main │ │ └── feature │ │ └── feature.xml └── pom.xml ├── libraries ├── liblldp │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowplugin │ │ │ └── libraries │ │ │ └── liblldp │ │ │ ├── BitBufferHelper.java │ │ │ ├── BufferException.java │ │ │ ├── CustomTLVKey.java │ │ │ ├── DataLinkAddress.java │ │ │ ├── EtherTypes.java │ │ │ ├── Ethernet.java │ │ │ ├── EthernetAddress.java │ │ │ ├── HexEncode.java │ │ │ ├── LLDP.java │ │ │ ├── LLDPTLV.java │ │ │ ├── NetUtils.java │ │ │ ├── Packet.java │ │ │ └── PacketException.java │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowplugin │ │ │ └── libraries │ │ │ ├── liblldp │ │ │ ├── BitBufferHelperTest.java │ │ │ ├── HexEncodeTest.java │ │ │ ├── LLDPTLVTest.java │ │ │ └── LLDPTest.java │ │ │ └── sal │ │ │ └── packet │ │ │ └── address │ │ │ └── EthernetAddressTest.java │ │ └── resources │ │ └── log4j.xml └── pom.xml ├── model ├── model-flow-base │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── opendaylight │ │ │ └── yang │ │ │ └── gen │ │ │ └── v1 │ │ │ └── urn │ │ │ └── opendaylight │ │ │ └── flow │ │ │ └── types │ │ │ └── port │ │ │ └── rev130925 │ │ │ └── PortNumberUniBuilder.java │ │ └── yang │ │ ├── opendaylight-action-types.yang │ │ ├── opendaylight-arbitrary-bitmask-fields.yang │ │ ├── opendaylight-flow-types.yang │ │ ├── opendaylight-group-types.yang │ │ ├── opendaylight-ipv6-arbitrary-bitmask-fields.yang │ │ ├── opendaylight-match-types.yang │ │ ├── opendaylight-meter-types.yang │ │ ├── opendaylight-multipart-types.yang │ │ ├── opendaylight-port-types.yang │ │ ├── opendaylight-queue-types.yang │ │ └── opendaylight-table-types.yang ├── model-flow-service │ ├── pom.xml │ └── src │ │ └── main │ │ └── yang │ │ ├── barrier-common.yang │ │ ├── batch-common.yang │ │ ├── flow-capable-transaction.yang │ │ ├── flow-errors.yang │ │ ├── flow-node-inventory.yang │ │ ├── flow-topology-discovery.yang │ │ ├── node-config.yang │ │ ├── node-ssl-connection-errors.yang │ │ ├── packet-processing.yang │ │ ├── sal-async-config.yang │ │ ├── sal-echo.yang │ │ ├── sal-flat-batch.yang │ │ ├── sal-flow.yang │ │ ├── sal-flows-batch.yang │ │ ├── sal-group.yang │ │ ├── sal-groups-batch.yang │ │ ├── sal-meter.yang │ │ ├── sal-meters-batch.yang │ │ ├── sal-port.yang │ │ ├── sal-queue.yang │ │ ├── sal-role.yang │ │ └── sal-table.yang ├── model-flow-statistics │ ├── pom.xml │ └── src │ │ └── main │ │ └── yang │ │ ├── opendaylight-direct-statistics.yang │ │ ├── opendaylight-flow-statistics.yang │ │ ├── opendaylight-flow-table-statistics.yang │ │ ├── opendaylight-group-statistics.yang │ │ ├── opendaylight-meter-statistics.yang │ │ ├── opendaylight-port-statistics.yang │ │ ├── opendaylight-queue-statistics.yang │ │ └── opendaylight-statistics-types.yang ├── model-inventory │ ├── pom.xml │ └── src │ │ └── main │ │ └── yang │ │ └── opendaylight-inventory.yang ├── model-topology │ ├── pom.xml │ └── src │ │ └── main │ │ └── yang │ │ └── opendaylight-topology-inventory.yang └── pom.xml ├── openflowjava ├── openflow-protocol-api │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── opendaylight │ │ │ │ └── openflowjava │ │ │ │ └── protocol │ │ │ │ └── api │ │ │ │ ├── connection │ │ │ │ ├── ConnectionAdapter.java │ │ │ │ ├── ConnectionConfiguration.java │ │ │ │ ├── ConnectionReadyListener.java │ │ │ │ ├── DeviceRequestFailedException.java │ │ │ │ ├── ListeningStatusProvider.java │ │ │ │ ├── OutboundQueue.java │ │ │ │ ├── OutboundQueueException.java │ │ │ │ ├── OutboundQueueHandler.java │ │ │ │ ├── OutboundQueueHandlerRegistration.java │ │ │ │ ├── StatisticsConfiguration.java │ │ │ │ ├── SwitchConnectionHandler.java │ │ │ │ ├── ThreadConfiguration.java │ │ │ │ ├── TlsConfiguration.java │ │ │ │ └── TlsConfigurationImpl.java │ │ │ │ ├── extensibility │ │ │ │ ├── AlienMessageListener.java │ │ │ │ ├── DeserializerExtensionProvider.java │ │ │ │ ├── DeserializerRegistry.java │ │ │ │ ├── DeserializerRegistryInjector.java │ │ │ │ ├── EnhancedMessageCodeKey.java │ │ │ │ ├── EnhancedMessageTypeKey.java │ │ │ │ ├── HeaderDeserializer.java │ │ │ │ ├── HeaderSerializer.java │ │ │ │ ├── OFDeserializer.java │ │ │ │ ├── OFGeneralDeserializer.java │ │ │ │ ├── OFGeneralSerializer.java │ │ │ │ ├── OFSerializer.java │ │ │ │ ├── SerializerExtensionProvider.java │ │ │ │ ├── SerializerRegistry.java │ │ │ │ └── SerializerRegistryInjector.java │ │ │ │ ├── keys │ │ │ │ ├── ActionDeserializerKey.java │ │ │ │ ├── ActionSerializerKey.java │ │ │ │ ├── ExperimenterActionDeserializerKey.java │ │ │ │ ├── ExperimenterActionSerializerKey.java │ │ │ │ ├── ExperimenterDeserializerKey.java │ │ │ │ ├── ExperimenterIdDeserializerKey.java │ │ │ │ ├── ExperimenterIdMeterSubTypeSerializerKey.java │ │ │ │ ├── ExperimenterIdSerializerKey.java │ │ │ │ ├── ExperimenterIdTypeDeserializerKey.java │ │ │ │ ├── ExperimenterIdTypeSerializerKey.java │ │ │ │ ├── ExperimenterInstructionDeserializerKey.java │ │ │ │ ├── ExperimenterInstructionSerializerKey.java │ │ │ │ ├── ExperimenterSerializerKey.java │ │ │ │ ├── InstructionDeserializerKey.java │ │ │ │ ├── InstructionSerializerKey.java │ │ │ │ ├── MatchEntryDeserializerKey.java │ │ │ │ ├── MatchEntrySerializerKey.java │ │ │ │ ├── MessageCodeKey.java │ │ │ │ ├── MessageTypeKey.java │ │ │ │ └── TypeToClassKey.java │ │ │ │ └── util │ │ │ │ ├── BinContent.java │ │ │ │ ├── EncodeConstants.java │ │ │ │ └── OxmMatchConstants.java │ │ └── yang │ │ │ ├── openflow-action.yang │ │ │ ├── openflow-approved-extensions.yang │ │ │ ├── openflow-augments.yang │ │ │ ├── openflow-configuration.yang │ │ │ ├── openflow-extensible-match.yang │ │ │ ├── openflow-instruction.yang │ │ │ ├── openflow-protocol.yang │ │ │ ├── openflow-types.yang │ │ │ └── system-notifications.yang │ │ └── test │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowjava │ │ └── protocol │ │ └── api │ │ ├── connection │ │ └── TlsConfigurationImplTest.java │ │ ├── extensibility │ │ ├── EnhancedMessageCodeKeyTest.java │ │ ├── EnhancedMessageTypeKeyTest.java │ │ ├── MessageCodeKeyTest.java │ │ └── MessageTypeKeyTest.java │ │ ├── keys │ │ ├── ActionDeserializerKeyTest.java │ │ ├── ActionSerializerKeyTest.java │ │ ├── InstructionDeserializerKeyTest.java │ │ ├── InstructionSerializerKeyTest.java │ │ ├── KeysTest.java │ │ ├── MatchEntryDeserializerKeyTest.java │ │ ├── MatchEntrySerializerKeyTest.java │ │ ├── TypeToClassKeyTest.java │ │ └── experimenter │ │ │ ├── ExperimenterActionDeserializerKeyTest.java │ │ │ ├── ExperimenterActionSerializerKeyTest.java │ │ │ ├── ExperimenterIdDeserializerKeyTest.java │ │ │ ├── ExperimenterIdSerializerKeyTest.java │ │ │ ├── ExperimenterIdTypeDeserializerKeyTest.java │ │ │ ├── ExperimenterIdTypeSerializerKeyTest.java │ │ │ ├── ExperimenterInstructionDeserializerKeyTest.java │ │ │ └── ExperimenterInstructionSerializerKeyTest.java │ │ └── util │ │ └── BinContentTest.java ├── openflow-protocol-impl │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── org │ │ │ │ └── opendaylight │ │ │ │ └── openflowjava │ │ │ │ ├── protocol │ │ │ │ └── impl │ │ │ │ │ ├── core │ │ │ │ │ ├── ChannelInitializerFactory.java │ │ │ │ │ ├── ConnectionConfigurationImpl.java │ │ │ │ │ ├── ConnectionInitializer.java │ │ │ │ │ ├── DelegatingInboundHandler.java │ │ │ │ │ ├── IdleHandler.java │ │ │ │ │ ├── OFDatagramPacketDecoder.java │ │ │ │ │ ├── OFDatagramPacketEncoder.java │ │ │ │ │ ├── OFDatagramPacketHandler.java │ │ │ │ │ ├── OFDecoder.java │ │ │ │ │ ├── OFEncoder.java │ │ │ │ │ ├── OFFrameDecoder.java │ │ │ │ │ ├── OFVersionDetector.java │ │ │ │ │ ├── PipelineHandlers.java │ │ │ │ │ ├── ProtocolChannelInitializer.java │ │ │ │ │ ├── ServerFacade.java │ │ │ │ │ ├── SslContextFactory.java │ │ │ │ │ ├── SslKeyStore.java │ │ │ │ │ ├── SwitchConnectionProviderFactoryImpl.java │ │ │ │ │ ├── SwitchConnectionProviderImpl.java │ │ │ │ │ ├── TcpChannelInitializer.java │ │ │ │ │ ├── TcpServerFacade.java │ │ │ │ │ ├── UdpChannelInitializer.java │ │ │ │ │ ├── UdpConnectionMap.java │ │ │ │ │ ├── UdpServerFacade.java │ │ │ │ │ ├── VersionMessageUdpWrapper.java │ │ │ │ │ ├── VersionMessageWrapper.java │ │ │ │ │ └── connection │ │ │ │ │ │ ├── AbstractConnectionAdapter.java │ │ │ │ │ │ ├── AbstractConnectionAdapterStatistics.java │ │ │ │ │ │ ├── AbstractOutboundQueueManager.java │ │ │ │ │ │ ├── AbstractRpcListener.java │ │ │ │ │ │ ├── AbstractStackedOutboundQueue.java │ │ │ │ │ │ ├── ChannelOutboundQueue.java │ │ │ │ │ │ ├── ConnectionAdapterFactory.java │ │ │ │ │ │ ├── ConnectionAdapterFactoryImpl.java │ │ │ │ │ │ ├── ConnectionAdapterImpl.java │ │ │ │ │ │ ├── ConnectionFacade.java │ │ │ │ │ │ ├── MessageConsumer.java │ │ │ │ │ │ ├── MessageListenerWrapper.java │ │ │ │ │ │ ├── OutboundQueueEntry.java │ │ │ │ │ │ ├── OutboundQueueHandlerRegistrationImpl.java │ │ │ │ │ │ ├── OutboundQueueManager.java │ │ │ │ │ │ ├── OutboundQueueManagerNoBarrier.java │ │ │ │ │ │ ├── ResponseExpectedRpcListener.java │ │ │ │ │ │ ├── RpcResponseKey.java │ │ │ │ │ │ ├── SimpleRpcListener.java │ │ │ │ │ │ ├── StackedOutboundQueue.java │ │ │ │ │ │ ├── StackedOutboundQueueNoBarrier.java │ │ │ │ │ │ ├── StackedSegment.java │ │ │ │ │ │ └── UdpMessageListenerWrapper.java │ │ │ │ │ ├── deserialization │ │ │ │ │ ├── ActionDeserializerInitializer.java │ │ │ │ │ ├── AdditionalMessageDeserializerInitializer.java │ │ │ │ │ ├── DeserializationFactory.java │ │ │ │ │ ├── DeserializerRegistryImpl.java │ │ │ │ │ ├── InstructionDeserializerInitializer.java │ │ │ │ │ ├── MatchEntryDeserializerInitializer.java │ │ │ │ │ ├── MessageDeserializerInitializer.java │ │ │ │ │ ├── MessageTypeCodeKey.java │ │ │ │ │ ├── TypeToClassMapInitializer.java │ │ │ │ │ ├── action │ │ │ │ │ │ ├── AbstractActionCaseDeserializer.java │ │ │ │ │ │ ├── AbstractActionDeserializer.java │ │ │ │ │ │ ├── AbstractEtherTypeActionDeserializer.java │ │ │ │ │ │ ├── AbstractOF10SetDlActionDeserializer.java │ │ │ │ │ │ ├── AbstractOF10SetNwActionDeserializer.java │ │ │ │ │ │ ├── AbstractOF10SetTpActionDeserializer.java │ │ │ │ │ │ ├── EmptyActionDeserializer.java │ │ │ │ │ │ ├── OF10EnqueueActionDeserializer.java │ │ │ │ │ │ ├── OF10OutputActionDeserializer.java │ │ │ │ │ │ ├── OF10SetDlDstActionDeserializer.java │ │ │ │ │ │ ├── OF10SetDlSrcActionDeserializer.java │ │ │ │ │ │ ├── OF10SetNwDstActionDeserializer.java │ │ │ │ │ │ ├── OF10SetNwSrcActionDeserializer.java │ │ │ │ │ │ ├── OF10SetNwTosActionDeserializer.java │ │ │ │ │ │ ├── OF10SetTpDstActionDeserializer.java │ │ │ │ │ │ ├── OF10SetTpSrcActionDeserializer.java │ │ │ │ │ │ ├── OF10SetVlanPcpActionDeserializer.java │ │ │ │ │ │ ├── OF10SetVlanVidActionDeserializer.java │ │ │ │ │ │ ├── OF13GroupActionDeserializer.java │ │ │ │ │ │ ├── OF13OutputActionDeserializer.java │ │ │ │ │ │ ├── OF13PopMplsActionDeserializer.java │ │ │ │ │ │ ├── OF13PushMplsActionDeserializer.java │ │ │ │ │ │ ├── OF13PushPbbActionDeserializer.java │ │ │ │ │ │ ├── OF13PushVlanActionDeserializer.java │ │ │ │ │ │ ├── OF13SetFieldActionDeserializer.java │ │ │ │ │ │ ├── OF13SetMplsTtlActionDeserializer.java │ │ │ │ │ │ ├── OF13SetNwTtlActionDeserializer.java │ │ │ │ │ │ └── OF13SetQueueActionDeserializer.java │ │ │ │ │ ├── factories │ │ │ │ │ │ ├── BarrierInputMessageFactory.java │ │ │ │ │ │ ├── BarrierReplyMessageFactory.java │ │ │ │ │ │ ├── EchoReplyMessageFactory.java │ │ │ │ │ │ ├── EchoRequestMessageFactory.java │ │ │ │ │ │ ├── ErrorMessageFactory.java │ │ │ │ │ │ ├── ExperimenterMessageFactory.java │ │ │ │ │ │ ├── FeaturesReplyMessageFactory.java │ │ │ │ │ │ ├── FlowModInputMessageFactory.java │ │ │ │ │ │ ├── FlowRemovedMessageFactory.java │ │ │ │ │ │ ├── GetAsyncReplyMessageFactory.java │ │ │ │ │ │ ├── GetAsyncRequestMessageFactory.java │ │ │ │ │ │ ├── GetConfigInputMessageFactory.java │ │ │ │ │ │ ├── GetConfigReplyMessageFactory.java │ │ │ │ │ │ ├── GetFeaturesInputMessageFactory.java │ │ │ │ │ │ ├── GetQueueConfigInputMessageFactory.java │ │ │ │ │ │ ├── GroupModInputMessageFactory.java │ │ │ │ │ │ ├── HelloMessageFactory.java │ │ │ │ │ │ ├── MeterModInputMessageFactory.java │ │ │ │ │ │ ├── MultipartReplyMessageFactory.java │ │ │ │ │ │ ├── MultipartRequestInputMessageFactory.java │ │ │ │ │ │ ├── OF10ErrorMessageFactory.java │ │ │ │ │ │ ├── OF10FeaturesReplyMessageFactory.java │ │ │ │ │ │ ├── OF10FeaturesRequestMessageFactory.java │ │ │ │ │ │ ├── OF10FlowModInputMessageFactory.java │ │ │ │ │ │ ├── OF10FlowRemovedMessageFactory.java │ │ │ │ │ │ ├── OF10GetQueueConfigInputMessageFactory.java │ │ │ │ │ │ ├── OF10HelloMessageFactory.java │ │ │ │ │ │ ├── OF10PacketInMessageFactory.java │ │ │ │ │ │ ├── OF10PacketOutInputMessageFactory.java │ │ │ │ │ │ ├── OF10PortModInputMessageFactory.java │ │ │ │ │ │ ├── OF10PortStatusMessageFactory.java │ │ │ │ │ │ ├── OF10QueueGetConfigReplyMessageFactory.java │ │ │ │ │ │ ├── OF10StatsReplyMessageFactory.java │ │ │ │ │ │ ├── OF10StatsRequestInputFactory.java │ │ │ │ │ │ ├── PacketInMessageFactory.java │ │ │ │ │ │ ├── PacketOutInputMessageFactory.java │ │ │ │ │ │ ├── PortModInputMessageFactory.java │ │ │ │ │ │ ├── PortStatusMessageFactory.java │ │ │ │ │ │ ├── QueueGetConfigReplyMessageFactory.java │ │ │ │ │ │ ├── RoleReplyMessageFactory.java │ │ │ │ │ │ ├── RoleRequestInputMessageFactory.java │ │ │ │ │ │ ├── SetAsyncInputMessageFactory.java │ │ │ │ │ │ ├── SetConfigInputMessageFactory.java │ │ │ │ │ │ ├── TableModInputMessageFactory.java │ │ │ │ │ │ └── VendorMessageFactory.java │ │ │ │ │ ├── instruction │ │ │ │ │ │ ├── AbstractActionInstructionDeserializer.java │ │ │ │ │ │ ├── ApplyActionsInstructionDeserializer.java │ │ │ │ │ │ ├── ClearActionsInstructionDeserializer.java │ │ │ │ │ │ ├── GoToTableInstructionDeserializer.java │ │ │ │ │ │ ├── MeterInstructionDeserializer.java │ │ │ │ │ │ ├── WriteActionsInstructionDeserializer.java │ │ │ │ │ │ └── WriteMetadataInstructionDeserializer.java │ │ │ │ │ └── match │ │ │ │ │ │ ├── AbstractOxmMatchEntryDeserializer.java │ │ │ │ │ │ ├── OxmArpOpDeserializer.java │ │ │ │ │ │ ├── OxmArpShaDeserializer.java │ │ │ │ │ │ ├── OxmArpSpaDeserializer.java │ │ │ │ │ │ ├── OxmArpThaDeserializer.java │ │ │ │ │ │ ├── OxmArpTpaDeserializer.java │ │ │ │ │ │ ├── OxmDeserializerHelper.java │ │ │ │ │ │ ├── OxmEthDstDeserializer.java │ │ │ │ │ │ ├── OxmEthSrcDeserializer.java │ │ │ │ │ │ ├── OxmEthTypeDeserializer.java │ │ │ │ │ │ ├── OxmIcmpv4CodeDeserializer.java │ │ │ │ │ │ ├── OxmIcmpv4TypeDeserializer.java │ │ │ │ │ │ ├── OxmIcmpv6CodeDeserializer.java │ │ │ │ │ │ ├── OxmIcmpv6TypeDeserializer.java │ │ │ │ │ │ ├── OxmInPhyPortDeserializer.java │ │ │ │ │ │ ├── OxmInPortDeserializer.java │ │ │ │ │ │ ├── OxmIpDscpDeserializer.java │ │ │ │ │ │ ├── OxmIpEcnDeserializer.java │ │ │ │ │ │ ├── OxmIpProtoDeserializer.java │ │ │ │ │ │ ├── OxmIpv4DstDeserializer.java │ │ │ │ │ │ ├── OxmIpv4SrcDeserializer.java │ │ │ │ │ │ ├── OxmIpv6DstDeserializer.java │ │ │ │ │ │ ├── OxmIpv6ExtHdrDeserializer.java │ │ │ │ │ │ ├── OxmIpv6FlabelDeserializer.java │ │ │ │ │ │ ├── OxmIpv6NdSllDeserializer.java │ │ │ │ │ │ ├── OxmIpv6NdTargetDeserializer.java │ │ │ │ │ │ ├── OxmIpv6NdTllDeserializer.java │ │ │ │ │ │ ├── OxmIpv6SrcDeserializer.java │ │ │ │ │ │ ├── OxmMetadataDeserializer.java │ │ │ │ │ │ ├── OxmMplsBosDeserializer.java │ │ │ │ │ │ ├── OxmMplsLabelDeserializer.java │ │ │ │ │ │ ├── OxmMplsTcDeserializer.java │ │ │ │ │ │ ├── OxmPacketTypeDeserializer.java │ │ │ │ │ │ ├── OxmPbbIsidDeserializer.java │ │ │ │ │ │ ├── OxmSctpDstDeserializer.java │ │ │ │ │ │ ├── OxmSctpSrcDeserializer.java │ │ │ │ │ │ ├── OxmTcpDstDeserializer.java │ │ │ │ │ │ ├── OxmTcpSrcDeserializer.java │ │ │ │ │ │ ├── OxmTunnelIdDeserializer.java │ │ │ │ │ │ ├── OxmUdpDstDeserializer.java │ │ │ │ │ │ ├── OxmUdpSrcDeserializer.java │ │ │ │ │ │ ├── OxmVlanPcpDeserializer.java │ │ │ │ │ │ ├── OxmVlanVidDeserializer.java │ │ │ │ │ │ └── ext │ │ │ │ │ │ ├── AbstractOxmExperimenterMatchEntryDeserializer.java │ │ │ │ │ │ └── OnfOxmTcpFlagsDeserializer.java │ │ │ │ │ ├── serialization │ │ │ │ │ ├── ActionsInitializer.java │ │ │ │ │ ├── AdditionalMessageFactoryInitializer.java │ │ │ │ │ ├── InstructionsInitializer.java │ │ │ │ │ ├── MatchEntriesInitializer.java │ │ │ │ │ ├── MessageFactoryInitializer.java │ │ │ │ │ ├── SerializationFactory.java │ │ │ │ │ ├── SerializerRegistryImpl.java │ │ │ │ │ ├── action │ │ │ │ │ │ ├── AbstractActionSerializer.java │ │ │ │ │ │ ├── EmptyActionSerializer.java │ │ │ │ │ │ ├── OF10EnqueueActionSerializer.java │ │ │ │ │ │ ├── OF10OutputActionSerializer.java │ │ │ │ │ │ ├── OF10SetDlDstActionSerializer.java │ │ │ │ │ │ ├── OF10SetDlSrcActionSerializer.java │ │ │ │ │ │ ├── OF10SetNwDstActionSerializer.java │ │ │ │ │ │ ├── OF10SetNwSrcActionSerializer.java │ │ │ │ │ │ ├── OF10SetNwTosActionSerializer.java │ │ │ │ │ │ ├── OF10SetTpDstActionSerializer.java │ │ │ │ │ │ ├── OF10SetTpSrcActionSerializer.java │ │ │ │ │ │ ├── OF10SetVlanPcpActionSerializer.java │ │ │ │ │ │ ├── OF10SetVlanVidActionSerializer.java │ │ │ │ │ │ ├── OF13GroupActionSerializer.java │ │ │ │ │ │ ├── OF13OutputActionSerializer.java │ │ │ │ │ │ ├── OF13PopMplsActionSerializer.java │ │ │ │ │ │ ├── OF13PushMplsActionSerializer.java │ │ │ │ │ │ ├── OF13PushPbbActionSerializer.java │ │ │ │ │ │ ├── OF13PushVlanActionSerializer.java │ │ │ │ │ │ ├── OF13SetFieldActionSerializer.java │ │ │ │ │ │ ├── OF13SetMplsTtlActionSerializer.java │ │ │ │ │ │ ├── OF13SetNwTtlActionSerializer.java │ │ │ │ │ │ └── OF13SetQueueActionSerializer.java │ │ │ │ │ ├── factories │ │ │ │ │ │ ├── BarrierInputMessageFactory.java │ │ │ │ │ │ ├── BarrierReplyMessageFactory.java │ │ │ │ │ │ ├── EchoInputMessageFactory.java │ │ │ │ │ │ ├── EchoOutputMessageFactory.java │ │ │ │ │ │ ├── EchoReplyInputMessageFactory.java │ │ │ │ │ │ ├── EchoRequestMessageFactory.java │ │ │ │ │ │ ├── ErrorMessageFactory.java │ │ │ │ │ │ ├── ExperimenterInputMessageFactory.java │ │ │ │ │ │ ├── ExperimenterMessageFactory.java │ │ │ │ │ │ ├── FlowModInputMessageFactory.java │ │ │ │ │ │ ├── FlowRemovedMessageFactory.java │ │ │ │ │ │ ├── GetAsyncReplyMessageFactory.java │ │ │ │ │ │ ├── GetAsyncRequestMessageFactory.java │ │ │ │ │ │ ├── GetConfigInputMessageFactory.java │ │ │ │ │ │ ├── GetConfigReplyMessageFactory.java │ │ │ │ │ │ ├── GetFeaturesInputMessageFactory.java │ │ │ │ │ │ ├── GetFeaturesOutputFactory.java │ │ │ │ │ │ ├── GetQueueConfigInputMessageFactory.java │ │ │ │ │ │ ├── GroupModInputMessageFactory.java │ │ │ │ │ │ ├── HelloInputMessageFactory.java │ │ │ │ │ │ ├── HelloMessageFactory.java │ │ │ │ │ │ ├── MeterModInputMessageFactory.java │ │ │ │ │ │ ├── MultipartReplyMessageFactory.java │ │ │ │ │ │ ├── MultipartRequestInputFactory.java │ │ │ │ │ │ ├── OF10BarrierInputMessageFactory.java │ │ │ │ │ │ ├── OF10BarrierReplyMessageFactory.java │ │ │ │ │ │ ├── OF10FeaturesReplyMessageFactory.java │ │ │ │ │ │ ├── OF10FlowModInputMessageFactory.java │ │ │ │ │ │ ├── OF10FlowRemovedMessageFactory.java │ │ │ │ │ │ ├── OF10HelloInputMessageFactory.java │ │ │ │ │ │ ├── OF10PacketInMessageFactory.java │ │ │ │ │ │ ├── OF10PacketOutInputMessageFactory.java │ │ │ │ │ │ ├── OF10PortModInputMessageFactory.java │ │ │ │ │ │ ├── OF10PortStatusMessageFactory.java │ │ │ │ │ │ ├── OF10QueueGetConfigInputMessageFactory.java │ │ │ │ │ │ ├── OF10QueueGetConfigReplyMessageFactory.java │ │ │ │ │ │ ├── OF10StatsReplyMessageFactory.java │ │ │ │ │ │ ├── OF10StatsRequestInputFactory.java │ │ │ │ │ │ ├── PacketInMessageFactory.java │ │ │ │ │ │ ├── PacketOutInputMessageFactory.java │ │ │ │ │ │ ├── PortModInputMessageFactory.java │ │ │ │ │ │ ├── PortStatusMessageFactory.java │ │ │ │ │ │ ├── QueueGetConfigReplyMessageFactory.java │ │ │ │ │ │ ├── RoleReplyMessageFactory.java │ │ │ │ │ │ ├── RoleRequestInputMessageFactory.java │ │ │ │ │ │ ├── SetAsyncInputMessageFactory.java │ │ │ │ │ │ ├── SetConfigMessageFactory.java │ │ │ │ │ │ ├── TableModInputMessageFactory.java │ │ │ │ │ │ └── VendorInputMessageFactory.java │ │ │ │ │ ├── instruction │ │ │ │ │ │ ├── AbstractActionInstructionSerializer.java │ │ │ │ │ │ ├── AbstractInstructionSerializer.java │ │ │ │ │ │ ├── ApplyActionsInstructionSerializer.java │ │ │ │ │ │ ├── ClearActionsInstructionSerializer.java │ │ │ │ │ │ ├── GoToTableInstructionSerializer.java │ │ │ │ │ │ ├── MeterInstructionSerializer.java │ │ │ │ │ │ ├── WriteActionsInstructionSerializer.java │ │ │ │ │ │ └── WriteMetadataInstructionSerializer.java │ │ │ │ │ └── match │ │ │ │ │ │ ├── AbstractOxmIpv4AddressSerializer.java │ │ │ │ │ │ ├── AbstractOxmIpv6AddressSerializer.java │ │ │ │ │ │ ├── AbstractOxmMacAddressSerializer.java │ │ │ │ │ │ ├── AbstractOxmMatchEntrySerializer.java │ │ │ │ │ │ ├── OxmArpOpSerializer.java │ │ │ │ │ │ ├── OxmArpShaSerializer.java │ │ │ │ │ │ ├── OxmArpSpaSerializer.java │ │ │ │ │ │ ├── OxmArpThaSerializer.java │ │ │ │ │ │ ├── OxmArpTpaSerializer.java │ │ │ │ │ │ ├── OxmEthDstSerializer.java │ │ │ │ │ │ ├── OxmEthSrcSerializer.java │ │ │ │ │ │ ├── OxmEthTypeSerializer.java │ │ │ │ │ │ ├── OxmIcmpv4CodeSerializer.java │ │ │ │ │ │ ├── OxmIcmpv4TypeSerializer.java │ │ │ │ │ │ ├── OxmIcmpv6CodeSerializer.java │ │ │ │ │ │ ├── OxmIcmpv6TypeSerializer.java │ │ │ │ │ │ ├── OxmInPhyPortSerializer.java │ │ │ │ │ │ ├── OxmInPortSerializer.java │ │ │ │ │ │ ├── OxmIpDscpSerializer.java │ │ │ │ │ │ ├── OxmIpEcnSerializer.java │ │ │ │ │ │ ├── OxmIpProtoSerializer.java │ │ │ │ │ │ ├── OxmIpv4DstSerializer.java │ │ │ │ │ │ ├── OxmIpv4SrcSerializer.java │ │ │ │ │ │ ├── OxmIpv6DstSerializer.java │ │ │ │ │ │ ├── OxmIpv6ExtHdrSerializer.java │ │ │ │ │ │ ├── OxmIpv6FlabelSerializer.java │ │ │ │ │ │ ├── OxmIpv6NdSllSerializer.java │ │ │ │ │ │ ├── OxmIpv6NdTargetSerializer.java │ │ │ │ │ │ ├── OxmIpv6NdTllSerializer.java │ │ │ │ │ │ ├── OxmIpv6SrcSerializer.java │ │ │ │ │ │ ├── OxmMetadataSerializer.java │ │ │ │ │ │ ├── OxmMplsBosSerializer.java │ │ │ │ │ │ ├── OxmMplsLabelSerializer.java │ │ │ │ │ │ ├── OxmMplsTcSerializer.java │ │ │ │ │ │ ├── OxmPacketTypeSerializer.java │ │ │ │ │ │ ├── OxmPbbIsidSerializer.java │ │ │ │ │ │ ├── OxmSctpDstSerializer.java │ │ │ │ │ │ ├── OxmSctpSrcSerializer.java │ │ │ │ │ │ ├── OxmTcpDstSerializer.java │ │ │ │ │ │ ├── OxmTcpSrcSerializer.java │ │ │ │ │ │ ├── OxmTunnelIdSerializer.java │ │ │ │ │ │ ├── OxmUdpDstSerializer.java │ │ │ │ │ │ ├── OxmUdpSrcSerializer.java │ │ │ │ │ │ ├── OxmVlanPcpSerializer.java │ │ │ │ │ │ ├── OxmVlanVidSerializer.java │ │ │ │ │ │ └── ext │ │ │ │ │ │ ├── AbstractOxmExperimenterMatchEntrySerializer.java │ │ │ │ │ │ └── OnfOxmTcpFlagsSerializer.java │ │ │ │ │ └── util │ │ │ │ │ ├── AbstractCodeKeyMaker.java │ │ │ │ │ ├── AbstractTypeKeyMaker.java │ │ │ │ │ ├── ActionConstants.java │ │ │ │ │ ├── ActionDeserializerRegistryHelper.java │ │ │ │ │ ├── ActionSerializerRegistryHelper.java │ │ │ │ │ ├── CodeKeyMaker.java │ │ │ │ │ ├── CodeKeyMakerFactory.java │ │ │ │ │ ├── CommonMessageRegistryHelper.java │ │ │ │ │ ├── InstructionConstants.java │ │ │ │ │ ├── InstructionDeserializerRegistryHelper.java │ │ │ │ │ ├── InstructionSerializerRegistryHelper.java │ │ │ │ │ ├── ListDeserializer.java │ │ │ │ │ ├── ListSerializer.java │ │ │ │ │ ├── MatchDeserializer.java │ │ │ │ │ ├── MatchEntryDeserializerRegistryHelper.java │ │ │ │ │ ├── MatchEntrySerializerRegistryHelper.java │ │ │ │ │ ├── OF10MatchDeserializer.java │ │ │ │ │ ├── OF10MatchSerializer.java │ │ │ │ │ ├── OF13MatchSerializer.java │ │ │ │ │ ├── OpenflowUtils.java │ │ │ │ │ ├── SimpleDeserializerRegistryHelper.java │ │ │ │ │ ├── TypeKeyMaker.java │ │ │ │ │ ├── TypeKeyMakerFactory.java │ │ │ │ │ ├── TypeToClassInitHelper.java │ │ │ │ │ └── VersionAssignableFactory.java │ │ │ │ └── statistics │ │ │ │ ├── Counter.java │ │ │ │ ├── CounterEventTypes.java │ │ │ │ └── StatisticsCounters.java │ │ └── resources │ │ │ ├── exemplary-cacert.pem │ │ │ ├── exemplary-ctlKeystore │ │ │ ├── exemplary-ctlTrustStore │ │ │ ├── exemplary-switch-cert.pem │ │ │ └── exemplary-switch-privkey.pem │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowjava │ │ │ ├── protocol │ │ │ └── impl │ │ │ │ ├── core │ │ │ │ ├── DelegatingInboundHandlerTest.java │ │ │ │ ├── DummyDecoder.java │ │ │ │ ├── IdleHandlerTest.java │ │ │ │ ├── OFDatagramPacketDecoderTest.java │ │ │ │ ├── OFDatagramPacketEncoderTest.java │ │ │ │ ├── OFDatagramPacketHandlerTest.java │ │ │ │ ├── OFDecoderStatisticsTest.java │ │ │ │ ├── OFDecoderTest.java │ │ │ │ ├── OFEncoderStatisticsTest.java │ │ │ │ ├── OFEncoderTest.java │ │ │ │ ├── OFFrameDecoderTest.java │ │ │ │ ├── OFVersionDetectorTest.java │ │ │ │ ├── PublishingChannelInitializerFactoryTest.java │ │ │ │ ├── PublishingChannelInitializerTest.java │ │ │ │ ├── SslContextFactoryTest.java │ │ │ │ ├── SslKeyStoreTest.java │ │ │ │ ├── TcpServerFacadeTest.java │ │ │ │ ├── UdpConnectionMapTest.java │ │ │ │ ├── UdpServerFacadeTest.java │ │ │ │ ├── VersionMessageUdpWrapperTest.java │ │ │ │ └── connection │ │ │ │ │ ├── ChannelOutboundQueue02Test.java │ │ │ │ │ ├── ChannelOutboundQueueTest.java │ │ │ │ │ ├── ConnectionAdapterFactoryImplTest.java │ │ │ │ │ ├── ConnectionAdapterImp02lTest.java │ │ │ │ │ ├── ConnectionAdapterImpl02Test.java │ │ │ │ │ ├── ConnectionAdapterImplStatisticsTest.java │ │ │ │ │ ├── ConnectionAdapterImplTest.java │ │ │ │ │ ├── ConnectionConfigurationImpl.java │ │ │ │ │ ├── MessageListenerWrapperTest.java │ │ │ │ │ ├── OutboundQueueEntryTest.java │ │ │ │ │ ├── ResponseExpectedRpcListenerTest.java │ │ │ │ │ ├── RpcResponseKeyTest.java │ │ │ │ │ ├── SimpleRpcListenerTest.java │ │ │ │ │ ├── SwitchConnectionProviderImpl02Test.java │ │ │ │ │ ├── SwitchConnectionProviderImplTest.java │ │ │ │ │ └── UdpMessageListenerWrapperTest.java │ │ │ │ ├── deserialization │ │ │ │ ├── DeserializationFactoryTest.java │ │ │ │ ├── DeserializerRegistryImplTest.java │ │ │ │ ├── MessageTypeCodeKeyTest.java │ │ │ │ ├── TypeToClassMapInitializerTest.java │ │ │ │ ├── factories │ │ │ │ │ ├── BarrierInputMessageFactoryTest.java │ │ │ │ │ ├── BarrierReplyMessageFactoryTest.java │ │ │ │ │ ├── EchoReplyMessageFactoryTest.java │ │ │ │ │ ├── EchoRequestMessageFactoryTest.java │ │ │ │ │ ├── ErrorMessageFactoryTest.java │ │ │ │ │ ├── ExperimenterMessageFactoryTest.java │ │ │ │ │ ├── FeaturesReplyMessageFactoryTest.java │ │ │ │ │ ├── FlowModInputMessageFactoryTest.java │ │ │ │ │ ├── FlowRemovedMessageFactoryTest.java │ │ │ │ │ ├── GetAsyncReplyMessageFactoryTest.java │ │ │ │ │ ├── GetAsyncRequestMessageFactoryTest.java │ │ │ │ │ ├── GetConfigInputMessageFactoryTest.java │ │ │ │ │ ├── GetConfigReplyMessageFactoryTest.java │ │ │ │ │ ├── GetFeaturesInputFactoryTest.java │ │ │ │ │ ├── GetQueueConfigInputMessageFactoryTest.java │ │ │ │ │ ├── GroupModInputMessageFactoryTest.java │ │ │ │ │ ├── HelloMessageFactoryTest.java │ │ │ │ │ ├── MeterModInputMessageFactoryTest.java │ │ │ │ │ ├── MultipartReplyMessageFactoryTest.java │ │ │ │ │ ├── MultipartRequestAggregateInputMessageFactoryTest.java │ │ │ │ │ ├── MultipartRequestDescInputMessageFactoryTest.java │ │ │ │ │ ├── MultipartRequestFlowInputMessageFactoryTest.java │ │ │ │ │ ├── MultipartRequestGroupInputMessageFactoryTest.java │ │ │ │ │ ├── MultipartRequestMeterConfigInputMessageFactoryTest.java │ │ │ │ │ ├── MultipartRequestMeterInputMessageFactoryTest.java │ │ │ │ │ ├── MultipartRequestPortStatsInputMessageFactoryTest.java │ │ │ │ │ ├── MultipartRequestQueueInputMessageFactoryTest.java │ │ │ │ │ ├── MultipartRequestTableFeaturesInputMessageFactoryTest.java │ │ │ │ │ ├── MultipartRequestTableInputMessageFactoryTest.java │ │ │ │ │ ├── OF10ErrorMessageFactoryTest.java │ │ │ │ │ ├── OF10FeaturesReplyMessageFactoryTest.java │ │ │ │ │ ├── OF10FeaturesRequestMessageFactoryTest.java │ │ │ │ │ ├── OF10FlowModInputMessageFactoryTest.java │ │ │ │ │ ├── OF10FlowRemovedMessageFactoryTest.java │ │ │ │ │ ├── OF10GetQueueConfigInputMessageFactoryTest.java │ │ │ │ │ ├── OF10HelloMessageFactoryTest.java │ │ │ │ │ ├── OF10PacketInMessageFactoryTest.java │ │ │ │ │ ├── OF10PacketOutInputMessageFactoryTest.java │ │ │ │ │ ├── OF10PortModInputMessageFactoryTest.java │ │ │ │ │ ├── OF10PortStatusMessageFactoryTest.java │ │ │ │ │ ├── OF10QueueGetConfigReplyMessageFactoryTest.java │ │ │ │ │ ├── OF10StatsReplyMessageFactoryTest.java │ │ │ │ │ ├── OF10StatsRequestInputAggregateFactoryTest.java │ │ │ │ │ ├── OF10StatsRequestInputDescFactoryTest.java │ │ │ │ │ ├── OF10StatsRequestInputFlowFactoryTest.java │ │ │ │ │ ├── OF10StatsRequestInputPortStatsFactoryTest.java │ │ │ │ │ ├── OF10StatsRequestInputQueueFactoryTest.java │ │ │ │ │ ├── OF10StatsRequestInputTableFactoryTest.java │ │ │ │ │ ├── PacketInMessageFactoryTest.java │ │ │ │ │ ├── PacketOutInputMessageFactoryTest.java │ │ │ │ │ ├── PortModInputMessageFactoryTest.java │ │ │ │ │ ├── PortStatusMessageFactoryTest.java │ │ │ │ │ ├── QueueGetConfigReplyMessageFactoryMultiTest.java │ │ │ │ │ ├── QueueGetConfigReplyMessageFactoryTest.java │ │ │ │ │ ├── RoleReplyMessageFactoryTest.java │ │ │ │ │ ├── RoleRequestInputMessageFactoryTest.java │ │ │ │ │ ├── SetAsyncInputMessageFactoryTest.java │ │ │ │ │ ├── SetConfigInputMessageFactoryTest.java │ │ │ │ │ ├── TableModInputMessageFactoryTest.java │ │ │ │ │ ├── VendorMessageFactoryTest.java │ │ │ │ │ └── multipart │ │ │ │ │ │ ├── MultipartReplyExperimenterTest.java │ │ │ │ │ │ ├── MultipartReplyFlowTest.java │ │ │ │ │ │ ├── MultipartReplyGroupFeaturesTest.java │ │ │ │ │ │ ├── MultipartReplyMeterFeaturesTest.java │ │ │ │ │ │ ├── MultipartReplyPortDescTest.java │ │ │ │ │ │ ├── MultipartReplyTableFeaturesTest.java │ │ │ │ │ │ └── OF10StatsReplyExperimenterTest.java │ │ │ │ ├── instruction │ │ │ │ │ └── AbstractInstructionDeserializerTest.java │ │ │ │ └── match │ │ │ │ │ ├── OxmIpv6ExtHdrDeserializerTest.java │ │ │ │ │ ├── OxmIpv6FlabelDeserializerTest.java │ │ │ │ │ ├── OxmMetadataDeserializerTest.java │ │ │ │ │ ├── OxmMplsBosDeserializerTest.java │ │ │ │ │ ├── OxmPacketTypeDeserializerTest.java │ │ │ │ │ ├── OxmPbbIsidDeserializerTest.java │ │ │ │ │ └── OxmVlanVidDeserializerTest.java │ │ │ │ ├── serialization │ │ │ │ ├── SerializationFactoryTest.java │ │ │ │ ├── SerializerRegistryImplTest.java │ │ │ │ ├── action │ │ │ │ │ └── OF13SetFieldActionSerializerTest.java │ │ │ │ ├── factories │ │ │ │ │ ├── BarrierInputMessageFactoryTest.java │ │ │ │ │ ├── BarrierReplyMessageFactoryTest.java │ │ │ │ │ ├── EchoInputMessageFactoryTest.java │ │ │ │ │ ├── EchoOutputMessageFactoryTest.java │ │ │ │ │ ├── EchoReplyInputMessageFactoryTest.java │ │ │ │ │ ├── EchoRequestMessageFactoryTest.java │ │ │ │ │ ├── ErrorMessageFactoryTest.java │ │ │ │ │ ├── ExperimenterInputMessageFactoryTest.java │ │ │ │ │ ├── FlowModInputMessageFactoryTest.java │ │ │ │ │ ├── FlowRemovedMessageFactoryTest.java │ │ │ │ │ ├── GetAsyncReplyMessageFactoryTest.java │ │ │ │ │ ├── GetConfigInputMessageFactoryTest.java │ │ │ │ │ ├── GetConfigReplyMessageFactoryTest.java │ │ │ │ │ ├── GetFeaturesInputMessageFactoryTest.java │ │ │ │ │ ├── GetFeaturesOutputFactoryTest.java │ │ │ │ │ ├── GetQueueConfigInputMessageFactoryTest.java │ │ │ │ │ ├── GetaAsyncRequestMessageFactoryTest.java │ │ │ │ │ ├── GroupModInputMessageFactoryTest.java │ │ │ │ │ ├── HelloInputMessageFactoryTest.java │ │ │ │ │ ├── HelloMessageFactoryTest.java │ │ │ │ │ ├── MeterModInputMessageFactoryTest.java │ │ │ │ │ ├── MultipartReplyMessageFactoryTest.java │ │ │ │ │ ├── MultipartRequestInputFactoryTest.java │ │ │ │ │ ├── OF10BarrierInputMessageFactoryTest.java │ │ │ │ │ ├── OF10BarrierReplyMessageFactoryTest.java │ │ │ │ │ ├── OF10FeaturesReplyMessageFactoryTest.java │ │ │ │ │ ├── OF10FlowModInputMessageFactoryTest.java │ │ │ │ │ ├── OF10FlowRemovedMessageFactoryTest.java │ │ │ │ │ ├── OF10HelloInputMessageFactoryTest.java │ │ │ │ │ ├── OF10PacketInMessageFactoryTest.java │ │ │ │ │ ├── OF10PacketOutInputMessageFactoryTest.java │ │ │ │ │ ├── OF10PortModInputMessageFactoryTest.java │ │ │ │ │ ├── OF10PortStatusMessageFactoryTest.java │ │ │ │ │ ├── OF10QueueGetConfigInputMessageFactoryTest.java │ │ │ │ │ ├── OF10QueueGetConfigReplyMessageFactoryTest.java │ │ │ │ │ ├── OF10StatsReplyMessageFactoryTest.java │ │ │ │ │ ├── OF10StatsRequestInputFactoryTest.java │ │ │ │ │ ├── PacketInMessageFactoryTest.java │ │ │ │ │ ├── PacketOutInputMessageFactoryTest.java │ │ │ │ │ ├── PortModInputMessageFactoryTest.java │ │ │ │ │ ├── PortStatusMessageFactoryTest.java │ │ │ │ │ ├── QueueGetConfigReplyMessageFactoryTest.java │ │ │ │ │ ├── RoleReplyMessageFactoryTest.java │ │ │ │ │ ├── RoleRequestInputMessageFactoryTest.java │ │ │ │ │ ├── SetAsyncInputMessageFactoryTest.java │ │ │ │ │ ├── SetConfigMessageFactoryTest.java │ │ │ │ │ ├── TableModInputMessageFactoryTest.java │ │ │ │ │ ├── VendorInputMessageFactoryTest.java │ │ │ │ │ └── multipart │ │ │ │ │ │ ├── MultipartRequestExperimenterTest.java │ │ │ │ │ │ ├── MultipartRequestGroupDescTest.java │ │ │ │ │ │ ├── MultipartRequestGroupFeaturesTest.java │ │ │ │ │ │ ├── MultipartRequestMeterFeaturesTest.java │ │ │ │ │ │ ├── MultipartRequestPortDescTest.java │ │ │ │ │ │ ├── MultipartRequestTableFeaturesTest.java │ │ │ │ │ │ ├── MultipartRequestTableTest.java │ │ │ │ │ │ ├── OF10StatsRequestAggregateTest.java │ │ │ │ │ │ └── OF10StatsRequestExperimenterTest.java │ │ │ │ └── match │ │ │ │ │ ├── OxmArpOpSerializerTest.java │ │ │ │ │ ├── OxmArpShaSerializerTest.java │ │ │ │ │ ├── OxmArpSpaSerializerTest.java │ │ │ │ │ ├── OxmArpThaSerializerTest.java │ │ │ │ │ ├── OxmArpTpaSerializerTest.java │ │ │ │ │ ├── OxmEthDstSerializerTest.java │ │ │ │ │ ├── OxmEthSrcSerializerTest.java │ │ │ │ │ ├── OxmEthTypeSerializerTest.java │ │ │ │ │ ├── OxmIcmpv4CodeSerializerTest.java │ │ │ │ │ ├── OxmIcmpv4TypeSerializerTest.java │ │ │ │ │ ├── OxmIcmpv6CodeSerializerTest.java │ │ │ │ │ ├── OxmIcmpv6TypeSerializerTest.java │ │ │ │ │ ├── OxmIpDscpSerializerTest.java │ │ │ │ │ ├── OxmIpProtoSerializerTest.java │ │ │ │ │ ├── OxmIpv4DstSerializerTest.java │ │ │ │ │ ├── OxmIpv4SrcSerializerTest.java │ │ │ │ │ ├── OxmIpv6ExtHdrSerializerTest.java │ │ │ │ │ ├── OxmIpv6NdSllSerializerTest.java │ │ │ │ │ ├── OxmIpv6NdTllSerializerTest.java │ │ │ │ │ ├── OxmIpv6SrcSerializerTest.java │ │ │ │ │ ├── OxmMetadataSerializerTest.java │ │ │ │ │ ├── OxmMplsBosSerializerTest.java │ │ │ │ │ ├── OxmMplsLabelSerializerTest.java │ │ │ │ │ ├── OxmMplsTcSerializerTest.java │ │ │ │ │ ├── OxmPacketTypeSerializerTest.java │ │ │ │ │ ├── OxmPbbIsidSerializerTest.java │ │ │ │ │ ├── OxmSctpDstSerializerTest.java │ │ │ │ │ ├── OxmSctpSrcSerializerTest.java │ │ │ │ │ ├── OxmTcpDstSerializerTest.java │ │ │ │ │ ├── OxmTcpSrcSerializerTest.java │ │ │ │ │ ├── OxmTunnelIdSerializerTest.java │ │ │ │ │ ├── OxmUdpDstSerializerTest.java │ │ │ │ │ ├── OxmUdpSrcSerializerTest.java │ │ │ │ │ ├── OxmVlanPcpSerializerTest.java │ │ │ │ │ └── OxmVlanVidSerializerTest.java │ │ │ │ └── util │ │ │ │ ├── ActionsDeserializerTest.java │ │ │ │ ├── BufferHelper.java │ │ │ │ ├── CodeKeyMakerFactoryTest.java │ │ │ │ ├── DefaultDeserializerFactoryTest.java │ │ │ │ ├── InstructionsDeserializerTest.java │ │ │ │ ├── ListDeserializerTest.java │ │ │ │ ├── ListSerializerTest.java │ │ │ │ ├── MatchDeserializerTest.java │ │ │ │ ├── OF10ActionsDeserializerTest.java │ │ │ │ ├── OF10ActionsSerializerTest.java │ │ │ │ ├── OF10MatchDeserializerTest.java │ │ │ │ ├── OF10MatchSerializerTest.java │ │ │ │ ├── OF13ActionsSerializerTest.java │ │ │ │ ├── OF13InstructionsSerializerTest.java │ │ │ │ ├── OF13MatchSerializer02Test.java │ │ │ │ ├── OF13MatchSerializerTest.java │ │ │ │ ├── OpenflowUtilsTest.java │ │ │ │ └── TypeKeyMakerFactoryTest.java │ │ │ └── statistics │ │ │ └── StatisticsCountersTest.java │ │ └── resources │ │ ├── key.bin │ │ ├── log4j.xml │ │ ├── selfSignedController │ │ └── selfSignedSwitch ├── openflow-protocol-it │ ├── pom.xml │ └── src │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowjava │ │ │ └── protocol │ │ │ └── it │ │ │ └── integration │ │ │ ├── IntegrationTest.java │ │ │ └── MockPlugin.java │ │ └── resources │ │ └── log4j.xml ├── openflow-protocol-spi │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowjava │ │ │ └── protocol │ │ │ └── spi │ │ │ ├── connection │ │ │ ├── SwitchConnectionProvider.java │ │ │ └── SwitchConnectionProviderFactory.java │ │ │ └── statistics │ │ │ └── StatisticsHandler.java │ │ └── yang │ │ └── openflow-switch-connection-config.yang ├── openflowjava-blueprint-config │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowjava │ │ │ └── mdsal │ │ │ ├── OSGiFactorySwitchConnectionConfiguration.java │ │ │ └── OSGiSwitchConnectionProviders.java │ │ └── resources │ │ └── initial │ │ ├── default-openflow-connection-config.xml │ │ └── legacy-openflow-connection-config.xml ├── openflowjava-util │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowjava │ │ │ └── util │ │ │ ├── ByteBufUtils.java │ │ │ ├── ExperimenterDeserializerKeyFactory.java │ │ │ └── ExperimenterSerializerKeyFactory.java │ │ └── test │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowjava │ │ └── util │ │ ├── ByteBufUtilsTest.java │ │ ├── ExperimenterDeserializerKeyFactoryTest.java │ │ └── ExperimenterSerializerKeyFactoryTest.java └── pom.xml ├── openflowplugin-api ├── pom.xml └── src │ └── main │ ├── java │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── api │ │ ├── ConnectionException.java │ │ ├── OFConstants.java │ │ └── openflow │ │ ├── FlowGroupCacheManager.java │ │ ├── FlowGroupInfo.java │ │ ├── FlowGroupInfoHistories.java │ │ ├── FlowGroupInfoHistory.java │ │ ├── FlowGroupStatus.java │ │ ├── OFPContext.java │ │ ├── OFPManager.java │ │ ├── ReconciliationState.java │ │ ├── configuration │ │ ├── ConfigurationListener.java │ │ ├── ConfigurationProperty.java │ │ ├── ConfigurationService.java │ │ └── ConfigurationServiceFactory.java │ │ ├── connection │ │ ├── ConnectionContext.java │ │ ├── ConnectionManager.java │ │ ├── ConnectionStatus.java │ │ ├── DeviceConnectionStatusProvider.java │ │ ├── HandshakeContext.java │ │ └── OutboundQueueProvider.java │ │ ├── device │ │ ├── DeviceContext.java │ │ ├── DeviceInfo.java │ │ ├── DeviceManager.java │ │ ├── DeviceRegistry.java │ │ ├── DeviceState.java │ │ ├── MessageTranslator.java │ │ ├── RequestContext.java │ │ ├── RequestContextStack.java │ │ ├── RequestFutureContext.java │ │ ├── TranslatorLibrary.java │ │ ├── TxFacade.java │ │ ├── Xid.java │ │ ├── XidSequencer.java │ │ ├── exception │ │ │ └── RequestQuotaExceededException.java │ │ ├── handlers │ │ │ ├── DeviceConnectedHandler.java │ │ │ ├── DeviceDisconnectedHandler.java │ │ │ ├── DeviceRemovedHandler.java │ │ │ ├── DeviceReplyProcessor.java │ │ │ └── MultiMsgCollector.java │ │ └── listener │ │ │ └── OpenflowMessageListenerFacade.java │ │ ├── lifecycle │ │ ├── ContextChain.java │ │ ├── ContextChainHolder.java │ │ ├── ContextChainMastershipState.java │ │ ├── ContextChainMastershipWatcher.java │ │ ├── ContextChainState.java │ │ ├── ContextChainStateListener.java │ │ ├── DeviceInitializationContext.java │ │ ├── GuardedContext.java │ │ ├── MasterChecker.java │ │ ├── OwnershipChangeListener.java │ │ ├── ReconciliationFrameworkRegistrar.java │ │ └── ReconciliationFrameworkStep.java │ │ ├── mastership │ │ ├── MastershipChangeException.java │ │ ├── MastershipChangeRegistration.java │ │ ├── MastershipChangeService.java │ │ ├── MastershipChangeServiceManager.java │ │ ├── ReconciliationFrameworkEvent.java │ │ └── ReconciliationFrameworkRegistration.java │ │ ├── md │ │ ├── core │ │ │ ├── ErrorHandler.java │ │ │ ├── HandshakeListener.java │ │ │ ├── HandshakeManager.java │ │ │ ├── TranslatorKey.java │ │ │ └── sal │ │ │ │ └── BuildSwitchFeatures.java │ │ └── util │ │ │ └── OpenflowVersion.java │ │ ├── protocol │ │ ├── deserialization │ │ │ ├── MatchEntryDeserializer.java │ │ │ ├── MatchEntryDeserializerRegistry.java │ │ │ └── MessageCodeExperimenterKey.java │ │ └── serialization │ │ │ ├── MatchEntrySerializer.java │ │ │ ├── MatchEntrySerializerKey.java │ │ │ └── MatchEntrySerializerRegistry.java │ │ ├── registry │ │ ├── CommonDeviceRegistry.java │ │ ├── flow │ │ │ ├── DeviceFlowRegistry.java │ │ │ ├── FlowDescriptor.java │ │ │ ├── FlowRegistryException.java │ │ │ └── FlowRegistryKey.java │ │ ├── group │ │ │ └── DeviceGroupRegistry.java │ │ └── meter │ │ │ └── DeviceMeterRegistry.java │ │ ├── role │ │ ├── RoleContext.java │ │ └── RoleManager.java │ │ ├── rpc │ │ ├── RpcContext.java │ │ └── RpcManager.java │ │ ├── statistics │ │ ├── MessageCountDumper.java │ │ ├── MessageObservatory.java │ │ ├── MessageSpy.java │ │ ├── StatisticsContext.java │ │ ├── StatisticsManager.java │ │ ├── compatibility │ │ │ ├── BackwardCompatibleAtomicService.java │ │ │ └── Delegator.java │ │ └── ofpspecific │ │ │ ├── EventIdentifier.java │ │ │ ├── MessageIntelligenceAgency.java │ │ │ ├── MessageSpy.java │ │ │ └── StatisticsGatherer.java │ │ └── translator │ │ └── TranslatorLibrarian.java │ └── yang │ ├── openflow-provider-config.yang │ ├── recinciliation-result-state.yang │ └── statistics-manager-control.yang ├── openflowplugin-blueprint-config ├── pom.xml └── src │ └── main │ └── resources │ └── initial │ └── openflowplugin.cfg ├── openflowplugin-common ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── common │ │ ├── txchain │ │ └── TransactionChainManager.java │ │ └── wait │ │ └── SimpleTaskRetryLooper.java │ └── test │ ├── java │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── common │ │ ├── txchain │ │ └── TransactionChainManagerTest.java │ │ └── wait │ │ └── SimpleTaskRetryLooperTest.java │ └── resources │ └── log4j.xml ├── openflowplugin-impl ├── pom.xml └── src │ ├── main │ ├── java │ │ └── org │ │ │ └── opendaylight │ │ │ └── openflowplugin │ │ │ └── impl │ │ │ ├── DefaultDiagStatusProvider.java │ │ │ ├── DiagStatusProvider.java │ │ │ ├── OpenFlowPluginProviderImpl.java │ │ │ ├── PingPongDataBroker.java │ │ │ ├── common │ │ │ ├── DeviceConnectionRateLimiter.java │ │ │ ├── MultipartReplyTranslatorUtil.java │ │ │ └── MultipartRequestInputFactory.java │ │ │ ├── configuration │ │ │ ├── ConfigurationServiceFactoryImpl.java │ │ │ ├── OSGiConfigurationServiceFactory.java │ │ │ └── OpenFlowProviderConfigImpl.java │ │ │ ├── connection │ │ │ ├── ConnectionContextImpl.java │ │ │ ├── ConnectionManagerImpl.java │ │ │ ├── ErrorHandlerSimpleImpl.java │ │ │ ├── HandshakeContextImpl.java │ │ │ ├── HandshakeManagerImpl.java │ │ │ ├── HandshakeStepWrapper.java │ │ │ ├── OutboundQueueProviderImpl.java │ │ │ └── listener │ │ │ │ ├── ConnectionReadyListenerImpl.java │ │ │ │ ├── HandshakeListenerImpl.java │ │ │ │ ├── OpenflowProtocolListenerInitialImpl.java │ │ │ │ └── SystemNotificationsListenerImpl.java │ │ │ ├── datastore │ │ │ ├── MultipartWriterProvider.java │ │ │ ├── MultipartWriterProviderFactory.java │ │ │ └── multipart │ │ │ │ ├── AbstractMultipartWriter.java │ │ │ │ ├── DescMultipartWriter.java │ │ │ │ ├── FlowStatsMultipartWriter.java │ │ │ │ ├── GroupDescMultipartWriter.java │ │ │ │ ├── GroupFeaturesMultipartWriter.java │ │ │ │ ├── GroupStatsMultipartWriter.java │ │ │ │ ├── MeterConfigMultipartWriter.java │ │ │ │ ├── MeterFeaturesMultipartWriter.java │ │ │ │ ├── MeterStatsMultipartWriter.java │ │ │ │ ├── PortDescMultipartWriter.java │ │ │ │ ├── PortStatsMultipartWriter.java │ │ │ │ ├── QueueStatsMultipartWriter.java │ │ │ │ ├── TableFeaturesMultipartWriter.java │ │ │ │ └── TableStatsMultipartWriter.java │ │ │ ├── device │ │ │ ├── BuildSwitchCapabilitiesOF10.java │ │ │ ├── BuildSwitchCapabilitiesOF13.java │ │ │ ├── DeviceContextImpl.java │ │ │ ├── DeviceManagerImpl.java │ │ │ ├── DeviceStateImpl.java │ │ │ ├── PacketInRateLimiter.java │ │ │ ├── SimpleRatelimiter.java │ │ │ ├── SwitchFeaturesUtil.java │ │ │ ├── history │ │ │ │ ├── FlowGroupInfoHistoryAppender.java │ │ │ │ └── FlowGroupInfoHistoryImpl.java │ │ │ ├── initialization │ │ │ │ ├── AbstractDeviceInitializer.java │ │ │ │ ├── DeviceInitializerProvider.java │ │ │ │ ├── DeviceInitializerProviderFactory.java │ │ │ │ ├── OF10DeviceInitializer.java │ │ │ │ └── OF13DeviceInitializer.java │ │ │ └── listener │ │ │ │ ├── MultiMsgCollectorImpl.java │ │ │ │ └── OpenflowProtocolListenerFullImpl.java │ │ │ ├── karaf │ │ │ ├── ClearStatsCommand.java │ │ │ ├── ResetEventTimesCommand.java │ │ │ ├── ResetSessionStatsCommand.java │ │ │ ├── ShowEventTimesCommand.java │ │ │ ├── ShowSessionStatsCommand.java │ │ │ └── ShowStatsCommand.java │ │ │ ├── lifecycle │ │ │ ├── ContextChainHolderImpl.java │ │ │ ├── ContextChainImpl.java │ │ │ └── GuardedContextImpl.java │ │ │ ├── mastership │ │ │ ├── MastershipChangeServiceManagerImpl.java │ │ │ └── MastershipServiceDelegate.java │ │ │ ├── protocol │ │ │ ├── deserialization │ │ │ │ ├── ActionDeserializerInjector.java │ │ │ │ ├── DeserializerInjector.java │ │ │ │ ├── InstructionDeserializerInjector.java │ │ │ │ ├── MatchDeserializerInjector.java │ │ │ │ ├── MessageDeserializerInjector.java │ │ │ │ ├── MultipartDeserializerInjector.java │ │ │ │ ├── action │ │ │ │ │ ├── AbstractActionDeserializer.java │ │ │ │ │ ├── CopyTtlInActionDeserializer.java │ │ │ │ │ ├── CopyTtlOutActionDeserializer.java │ │ │ │ │ ├── DecMplsTtlActionDeserializer.java │ │ │ │ │ ├── DecNwTtlActionDeserializer.java │ │ │ │ │ ├── GroupActionDeserializer.java │ │ │ │ │ ├── OutputActionDeserializer.java │ │ │ │ │ ├── PopMplsActionDeserializer.java │ │ │ │ │ ├── PopPbbActionDeserializer.java │ │ │ │ │ ├── PopVlanActionDeserializer.java │ │ │ │ │ ├── PushMplsActionDeserializer.java │ │ │ │ │ ├── PushPbbActionDeserializer.java │ │ │ │ │ ├── PushVlanActionDeserializer.java │ │ │ │ │ ├── SetFieldActionDeserializer.java │ │ │ │ │ ├── SetMplsTtlActionDeserializer.java │ │ │ │ │ ├── SetNwTtlActionDeserializer.java │ │ │ │ │ └── SetQueueActionDeserializer.java │ │ │ │ ├── instruction │ │ │ │ │ ├── AbstractActionInstructionDeserializer.java │ │ │ │ │ ├── AbstractInstructionDeserializer.java │ │ │ │ │ ├── ApplyActionsInstructionDeserializer.java │ │ │ │ │ ├── ClearActionsInstructionDeserializer.java │ │ │ │ │ ├── GoToTableInstructionDeserializer.java │ │ │ │ │ ├── MeterInstructionDeserializer.java │ │ │ │ │ ├── WriteActionsInstructionDeserializer.java │ │ │ │ │ └── WriteMetadataInstructionDeserializer.java │ │ │ │ ├── key │ │ │ │ │ ├── MessageCodeActionExperimenterKey.java │ │ │ │ │ └── MessageCodeMatchKey.java │ │ │ │ ├── match │ │ │ │ │ ├── AbstractMatchEntryDeserializer.java │ │ │ │ │ ├── ArpOpEntryDeserializer.java │ │ │ │ │ ├── ArpSourceHardwareAddressEntryDeserializer.java │ │ │ │ │ ├── ArpSourceTransportAddressEntryDeserializer.java │ │ │ │ │ ├── ArpTargetHardwareAddressEntryDeserializer.java │ │ │ │ │ ├── ArpTargetTransportAddressEntryDeserializer.java │ │ │ │ │ ├── EthernetDestinationEntryDeserializer.java │ │ │ │ │ ├── EthernetSourceEntryDeserializer.java │ │ │ │ │ ├── EthernetTypeEntryDeserializer.java │ │ │ │ │ ├── Icmpv4CodeEntryDeserializer.java │ │ │ │ │ ├── Icmpv4TypeEntryDeserializer.java │ │ │ │ │ ├── Icmpv6CodeEntryDeserializer.java │ │ │ │ │ ├── Icmpv6TypeEntryDeserializer.java │ │ │ │ │ ├── InPhyPortEntryDeserializer.java │ │ │ │ │ ├── InPortEntryDeserializer.java │ │ │ │ │ ├── IpDscpEntryDeserializer.java │ │ │ │ │ ├── IpEcnEntryDeserializer.java │ │ │ │ │ ├── IpProtoEntryDeserializer.java │ │ │ │ │ ├── Ipv4DestinationEntryDeserializer.java │ │ │ │ │ ├── Ipv4SourceEntryDeserializer.java │ │ │ │ │ ├── Ipv6DestinationEntryDeserializer.java │ │ │ │ │ ├── Ipv6ExtHeaderEntryDeserializer.java │ │ │ │ │ ├── Ipv6FlabelEntryDeserializer.java │ │ │ │ │ ├── Ipv6NdSllEntryDeserializer.java │ │ │ │ │ ├── Ipv6NdTargetEntryDeserializer.java │ │ │ │ │ ├── Ipv6NdTllEntryDeserializer.java │ │ │ │ │ ├── Ipv6SourceEntryDeserializer.java │ │ │ │ │ ├── MatchDeserializer.java │ │ │ │ │ ├── MetadataEntryDeserializer.java │ │ │ │ │ ├── MplsBosEntryDeserializer.java │ │ │ │ │ ├── MplsLabelEntryDeserializer.java │ │ │ │ │ ├── MplsTcEntryDeserializer.java │ │ │ │ │ ├── PacketTypeEntryDeserializer.java │ │ │ │ │ ├── PbbEntryDeserializer.java │ │ │ │ │ ├── SctpDestinationPortEntryDeserializer.java │ │ │ │ │ ├── SctpSourcePortEntryDeserializer.java │ │ │ │ │ ├── TcpDestinationPortEntryDeserializer.java │ │ │ │ │ ├── TcpFlagsEntryDeserializer.java │ │ │ │ │ ├── TcpSourcePortEntryDeserializer.java │ │ │ │ │ ├── TunnelIdEntryDeserializer.java │ │ │ │ │ ├── UdpDestinationPortEntryDeserializer.java │ │ │ │ │ ├── UdpSourcePortEntryDeserializer.java │ │ │ │ │ ├── VlanPcpEntryDeserializer.java │ │ │ │ │ └── VlanVidEntryDeserializer.java │ │ │ │ ├── messages │ │ │ │ │ ├── AsyncConfigMessageDeserializer.java │ │ │ │ │ ├── FlowMessageDeserializer.java │ │ │ │ │ ├── GroupMessageDeserializer.java │ │ │ │ │ ├── MeterMessageDeserializer.java │ │ │ │ │ ├── PacketInMessageDeserializer.java │ │ │ │ │ └── PortMessageDeserializer.java │ │ │ │ ├── multipart │ │ │ │ │ ├── MultipartReplyDescDeserializer.java │ │ │ │ │ ├── MultipartReplyExperimenterDeserializer.java │ │ │ │ │ ├── MultipartReplyFlowAggregateStatsDeserializer.java │ │ │ │ │ ├── MultipartReplyFlowStatsDeserializer.java │ │ │ │ │ ├── MultipartReplyFlowTableStatsDeserializer.java │ │ │ │ │ ├── MultipartReplyGroupDescDeserializer.java │ │ │ │ │ ├── MultipartReplyGroupFeaturesDeserializer.java │ │ │ │ │ ├── MultipartReplyGroupStatsDeserializer.java │ │ │ │ │ ├── MultipartReplyMessageDeserializer.java │ │ │ │ │ ├── MultipartReplyMeterConfigDeserializer.java │ │ │ │ │ ├── MultipartReplyMeterFeaturesDeserializer.java │ │ │ │ │ ├── MultipartReplyMeterStatsDeserializer.java │ │ │ │ │ ├── MultipartReplyPortDescDeserializer.java │ │ │ │ │ ├── MultipartReplyPortStatsDeserializer.java │ │ │ │ │ ├── MultipartReplyQueueStatsDeserializer.java │ │ │ │ │ ├── MultipartReplyTableFeaturesDeserializer.java │ │ │ │ │ └── TableFeaturesMatchFieldDeserializer.java │ │ │ │ └── util │ │ │ │ │ ├── ActionUtil.java │ │ │ │ │ └── InstructionUtil.java │ │ │ └── serialization │ │ │ │ ├── ActionSerializerInjector.java │ │ │ │ ├── InstructionSerializerInjector.java │ │ │ │ ├── MatchSerializerInjector.java │ │ │ │ ├── MessageSerializerInjector.java │ │ │ │ ├── MultipartMatchFieldSerializerInjector.java │ │ │ │ ├── MultipartSerializerInjector.java │ │ │ │ ├── MultipartTableFeaturesSerializerInjector.java │ │ │ │ ├── SerializerInjector.java │ │ │ │ ├── actions │ │ │ │ ├── AbstractActionSerializer.java │ │ │ │ ├── AbstractSetFieldActionSerializer.java │ │ │ │ ├── CopyTtlInActionSerializer.java │ │ │ │ ├── CopyTtlOutActionSerializer.java │ │ │ │ ├── DecMplsTtlActionSerializer.java │ │ │ │ ├── DecNwTtlActionSerializer.java │ │ │ │ ├── DropActionSerializer.java │ │ │ │ ├── GroupActionSerializer.java │ │ │ │ ├── OutputActionSerializer.java │ │ │ │ ├── PopMplsActionSerializer.java │ │ │ │ ├── PopPbbActionSerializer.java │ │ │ │ ├── PopVlanActionSerializer.java │ │ │ │ ├── PushMplsActionSerializer.java │ │ │ │ ├── PushPbbActionSerializer.java │ │ │ │ ├── PushVlanActionSerializer.java │ │ │ │ ├── SetDlDstActionSerializer.java │ │ │ │ ├── SetDlSrcActionSerializer.java │ │ │ │ ├── SetFieldActionSerializer.java │ │ │ │ ├── SetMplsTtlActionSerializer.java │ │ │ │ ├── SetNwDstActionSerializer.java │ │ │ │ ├── SetNwSrcActionSerializer.java │ │ │ │ ├── SetNwTosActionSerializer.java │ │ │ │ ├── SetNwTtlActionSerializer.java │ │ │ │ ├── SetQueueActionSerializer.java │ │ │ │ ├── SetTpDstActionSerializer.java │ │ │ │ ├── SetTpSrcActionSerializer.java │ │ │ │ ├── SetVlanIdActionSerializer.java │ │ │ │ ├── SetVlanPcpActionSerializer.java │ │ │ │ └── StripVlanActionSerializer.java │ │ │ │ ├── instructions │ │ │ │ ├── AbstractActionInstructionSerializer.java │ │ │ │ ├── AbstractInstructionSerializer.java │ │ │ │ ├── ApplyActionsInstructionSerializer.java │ │ │ │ ├── ClearActionsInstructionSerializer.java │ │ │ │ ├── GoToTableInstructionSerializer.java │ │ │ │ ├── MeterInstructionSerializer.java │ │ │ │ ├── WriteActionsInstructionSerializer.java │ │ │ │ └── WriteMetadataInstructionSerializer.java │ │ │ │ ├── match │ │ │ │ ├── AbstractExperimenterMatchEntrySerializer.java │ │ │ │ ├── AbstractIpv4PolymorphicEntrySerializer.java │ │ │ │ ├── AbstractIpv4PrefixEntrySerializer.java │ │ │ │ ├── AbstractIpv6PolymorphicEntrySerializer.java │ │ │ │ ├── AbstractMacAddressEntrySerializer.java │ │ │ │ ├── AbstractMacAddressFilterEntrySerializer.java │ │ │ │ ├── AbstractMatchEntrySerializer.java │ │ │ │ ├── AbstractPolymorphicEntrySerializer.java │ │ │ │ ├── AbstractPortNumberEntrySerializer.java │ │ │ │ ├── AbstractPortNumberWithMaskEntrySerilizer.java │ │ │ │ ├── AbstractPrimitiveEntrySerializer.java │ │ │ │ ├── AbstractUint16EntrySerializer.java │ │ │ │ ├── AbstractUint32EntrySerializer.java │ │ │ │ ├── AbstractUint8EntrySerializer.java │ │ │ │ ├── ArpOpEntrySerializer.java │ │ │ │ ├── ArpSourceHardwareAddressEntrySerializer.java │ │ │ │ ├── ArpSourceTransportAddressEntrySerializer.java │ │ │ │ ├── ArpTargetHardwareAddressEntrySerializer.java │ │ │ │ ├── ArpTargetTransportAddressEntrySerializer.java │ │ │ │ ├── EthernetDestinationEntrySerializer.java │ │ │ │ ├── EthernetSourceEntrySerializer.java │ │ │ │ ├── EthernetTypeEntrySerializer.java │ │ │ │ ├── Icmpv4CodeEntrySerializer.java │ │ │ │ ├── Icmpv4TypeEntrySerializer.java │ │ │ │ ├── Icmpv6CodeEntrySerializer.java │ │ │ │ ├── Icmpv6TypeEntrySerializer.java │ │ │ │ ├── InPhyPortEntrySerializer.java │ │ │ │ ├── InPortEntrySerializer.java │ │ │ │ ├── IpDscpEntrySerializer.java │ │ │ │ ├── IpEcnEntrySerializer.java │ │ │ │ ├── IpProtoEntrySerializer.java │ │ │ │ ├── Ipv4DestinationEntrySerializer.java │ │ │ │ ├── Ipv4SourceEntrySerializer.java │ │ │ │ ├── Ipv6DestinationEntrySerializer.java │ │ │ │ ├── Ipv6ExtHeaderEntrySerializer.java │ │ │ │ ├── Ipv6LabelEntrySerializer.java │ │ │ │ ├── Ipv6NdSllEntrySerializer.java │ │ │ │ ├── Ipv6NdTargetEntrySerializer.java │ │ │ │ ├── Ipv6NdTllEntrySerializer.java │ │ │ │ ├── Ipv6SourceEntrySerializer.java │ │ │ │ ├── MatchEntrySerializerKeyImpl.java │ │ │ │ ├── MatchSerializer.java │ │ │ │ ├── MetadataEntrySerializer.java │ │ │ │ ├── MplsBosEntrySerializer.java │ │ │ │ ├── MplsLabelEntrySerializer.java │ │ │ │ ├── MplsTcEntrySerializer.java │ │ │ │ ├── PacketTypeEntrySerializer.java │ │ │ │ ├── PbbEntrySerializer.java │ │ │ │ ├── SctpDestinationPortEntrySerializer.java │ │ │ │ ├── SctpSourcePortEntrySerializer.java │ │ │ │ ├── TcpDestinationPortEntrySerializer.java │ │ │ │ ├── TcpFlagsEntrySerializer.java │ │ │ │ ├── TcpSourcePortEntrySerializer.java │ │ │ │ ├── TunnelIdEntrySerializer.java │ │ │ │ ├── TunnelIpv4DestinationEntrySerializer.java │ │ │ │ ├── TunnelIpv4SourceEntrySerializer.java │ │ │ │ ├── UdpDestinationPortEntrySerializer.java │ │ │ │ ├── UdpSourcePortEntrySerializer.java │ │ │ │ ├── VlanPcpEntrySerializer.java │ │ │ │ └── VlanVidEntrySerializer.java │ │ │ │ ├── messages │ │ │ │ ├── AbstractMessageSerializer.java │ │ │ │ ├── AsyncConfigMessageSerializer.java │ │ │ │ ├── FlowMessageSerializer.java │ │ │ │ ├── GroupMessageSerializer.java │ │ │ │ ├── MeterMessageSerializer.java │ │ │ │ └── PortMessageSerializer.java │ │ │ │ ├── multipart │ │ │ │ ├── MultipartRequestDescSerializer.java │ │ │ │ ├── MultipartRequestExperimenterSerializer.java │ │ │ │ ├── MultipartRequestFlowAggregateStatsSerializer.java │ │ │ │ ├── MultipartRequestFlowStatsSerializer.java │ │ │ │ ├── MultipartRequestFlowTableStatsSerializer.java │ │ │ │ ├── MultipartRequestGroupDescSerializer.java │ │ │ │ ├── MultipartRequestGroupFeaturesSerializer.java │ │ │ │ ├── MultipartRequestGroupStatsSerializer.java │ │ │ │ ├── MultipartRequestMessageSerializer.java │ │ │ │ ├── MultipartRequestMeterConfigSerializer.java │ │ │ │ ├── MultipartRequestMeterFeaturesSerializer.java │ │ │ │ ├── MultipartRequestMeterStatsSerializer.java │ │ │ │ ├── MultipartRequestPortDescSerializer.java │ │ │ │ ├── MultipartRequestPortStatsSerializer.java │ │ │ │ ├── MultipartRequestQueueStatsSerializer.java │ │ │ │ ├── MultipartRequestTableFeaturesSerializer.java │ │ │ │ └── tablefeatures │ │ │ │ │ ├── AbstractTablePropertySerializer.java │ │ │ │ │ ├── ApplyActionsMissTablePropertySerializer.java │ │ │ │ │ ├── ApplyActionsTablePropertySerializer.java │ │ │ │ │ ├── ApplySetfieldMissTablePropertySerializer.java │ │ │ │ │ ├── ApplySetfieldTablePropertySerializer.java │ │ │ │ │ ├── InstructionsMissTablePropertySerializer.java │ │ │ │ │ ├── InstructionsTablePropertySerializer.java │ │ │ │ │ ├── MatchTablePropertySerializer.java │ │ │ │ │ ├── NextTableMissTablePropertySerializer.java │ │ │ │ │ ├── NextTableTablePropertySerializer.java │ │ │ │ │ ├── WildcardsTablePropertySerializer.java │ │ │ │ │ ├── WriteActionsMissTablePropertySerializer.java │ │ │ │ │ ├── WriteActionsTablePropertySerializer.java │ │ │ │ │ ├── WriteSetfieldMissTablePropertySerializer.java │ │ │ │ │ ├── WriteSetfieldTablePropertySerializer.java │ │ │ │ │ └── matchfield │ │ │ │ │ ├── AbstractMatchFieldSerializer.java │ │ │ │ │ ├── ArpOpMatchFieldSerializer.java │ │ │ │ │ ├── ArpShaMatchFieldSerializer.java │ │ │ │ │ ├── ArpSpaMatchFieldSerializer.java │ │ │ │ │ ├── ArpThaMatchFieldSerializer.java │ │ │ │ │ ├── ArpTpaMatchFieldSerializer.java │ │ │ │ │ ├── EthDstMatchFieldSerializer.java │ │ │ │ │ ├── EthSrcMatchFieldSerializer.java │ │ │ │ │ ├── EthTypeMatchFieldSerializer.java │ │ │ │ │ ├── Icmpv4CodeMatchFieldSerializer.java │ │ │ │ │ ├── Icmpv4TypeMatchFieldSerializer.java │ │ │ │ │ ├── Icmpv6CodeMatchFieldSerializer.java │ │ │ │ │ ├── Icmpv6TypeMatchFieldSerializer.java │ │ │ │ │ ├── InPhyPortMatchFieldSerializer.java │ │ │ │ │ ├── InPortMatchFieldSerializer.java │ │ │ │ │ ├── IpDscpMatchFieldSerializer.java │ │ │ │ │ ├── IpEcnMatchFieldSerializer.java │ │ │ │ │ ├── IpProtoMatchFieldSerializer.java │ │ │ │ │ ├── Ipv4DstMatchFieldSerializer.java │ │ │ │ │ ├── Ipv4SrcMatchFieldSerializer.java │ │ │ │ │ ├── Ipv6DstMatchFieldSerializer.java │ │ │ │ │ ├── Ipv6ExtHdrMatchFieldSerializer.java │ │ │ │ │ ├── Ipv6FlabelMatchFieldSerializer.java │ │ │ │ │ ├── Ipv6NdSllMatchFieldSerializer.java │ │ │ │ │ ├── Ipv6NdTargetMatchFieldSerializer.java │ │ │ │ │ ├── Ipv6NdTllMatchFieldSerializer.java │ │ │ │ │ ├── Ipv6SrcMatchFieldSerializer.java │ │ │ │ │ ├── MetadataMatchFieldSerializer.java │ │ │ │ │ ├── MplsBosMatchFieldSerializer.java │ │ │ │ │ ├── MplsLabelMatchFieldSerializer.java │ │ │ │ │ ├── MplsTcMatchFieldSerializer.java │ │ │ │ │ ├── PbbIsidMatchFieldSerializer.java │ │ │ │ │ ├── SctpDstMatchFieldSerializer.java │ │ │ │ │ ├── SctpSrcMatchFieldSerializer.java │ │ │ │ │ ├── TcpDstMatchFieldSerializer.java │ │ │ │ │ ├── TcpFlagsMatchFieldSerializer.java │ │ │ │ │ ├── TcpSrcMatchFieldSerializer.java │ │ │ │ │ ├── TunnelIdMatchFieldSerializer.java │ │ │ │ │ ├── UdpDstMatchFieldSerializer.java │ │ │ │ │ ├── UdpSrcMatchFieldSerializer.java │ │ │ │ │ ├── VlanPcpMatchFieldSerializer.java │ │ │ │ │ └── VlanVidMatchFieldSerializer.java │ │ │ │ └── util │ │ │ │ ├── ActionUtil.java │ │ │ │ └── InstructionUtil.java │ │ │ ├── registry │ │ │ ├── flow │ │ │ │ ├── DeviceFlowRegistryImpl.java │ │ │ │ ├── FlowDescriptorFactory.java │ │ │ │ ├── FlowRegistryKeyFactory.java │ │ │ │ └── FlowRegistryKeyImpl.java │ │ │ ├── group │ │ │ │ └── DeviceGroupRegistryImpl.java │ │ │ └── meter │ │ │ │ └── DeviceMeterRegistryImpl.java │ │ │ ├── role │ │ │ ├── RoleChangeException.java │ │ │ ├── RoleContextImpl.java │ │ │ └── RoleManagerImpl.java │ │ │ ├── rpc │ │ │ ├── AbstractRequestContext.java │ │ │ ├── RpcContextImpl.java │ │ │ └── RpcManagerImpl.java │ │ │ ├── services │ │ │ ├── AbstractAggregateFlowMultipartService.java │ │ │ ├── AbstractExperimenterMultipartService.java │ │ │ ├── AbstractMultipartCollectorService.java │ │ │ ├── AbstractMultipartOnTheFlyService.java │ │ │ ├── AbstractMultipartRequestCallback.java │ │ │ ├── AbstractMultipartRequestOnTheFlyCallback.java │ │ │ ├── AbstractMultipartService.java │ │ │ ├── AbstractRequestCallback.java │ │ │ ├── AbstractService.java │ │ │ ├── AbstractSilentErrorService.java │ │ │ ├── AbstractSimpleService.java │ │ │ ├── AbstractTableMultipartService.java │ │ │ ├── RoleService.java │ │ │ ├── SendEchoImpl.java │ │ │ ├── SimpleRequestCallback.java │ │ │ ├── VoidRequestCallback.java │ │ │ ├── batch │ │ │ │ ├── BatchPlanStep.java │ │ │ │ ├── BatchStepJob.java │ │ │ │ ├── BatchStepType.java │ │ │ │ ├── FlatBatchFlowAdapters.java │ │ │ │ ├── FlatBatchGroupAdapters.java │ │ │ │ └── FlatBatchMeterAdapters.java │ │ │ ├── cache │ │ │ │ └── FlowGroupCacheManagerImpl.java │ │ │ ├── multilayer │ │ │ │ ├── MultiAddFlow.java │ │ │ │ ├── MultiLayerAggregateFlowMultipartService.java │ │ │ │ ├── MultiLayerExperimenterMultipartService.java │ │ │ │ ├── MultiLayerFlowMultipartRequestOnTheFlyCallback.java │ │ │ │ ├── MultiLayerFlowService.java │ │ │ │ ├── MultiLayerGroupService.java │ │ │ │ ├── MultiLayerMeterService.java │ │ │ │ ├── MultiLayerMultipartCollectorService.java │ │ │ │ ├── MultiLayerMultipartRequestCallback.java │ │ │ │ ├── MultiLayerTableMultipartService.java │ │ │ │ ├── MultiRemoveFlow.java │ │ │ │ └── MultiUpdateFlow.java │ │ │ ├── sal │ │ │ │ ├── AbstractAddFlow.java │ │ │ │ ├── AbstractDeviceRpc.java │ │ │ │ ├── AbstractFlowRpc.java │ │ │ │ ├── AbstractGroupRpc.java │ │ │ │ ├── AbstractMeterRpc.java │ │ │ │ ├── AbstractRemoveFlow.java │ │ │ │ ├── AbstractUpdateFlow.java │ │ │ │ ├── AddBundleMessagesImpl.java │ │ │ │ ├── AddFlowCallback.java │ │ │ │ ├── AddFlowsBatchImpl.java │ │ │ │ ├── AddGroupImpl.java │ │ │ │ ├── AddGroupsBatchImpl.java │ │ │ │ ├── AddMeterImpl.java │ │ │ │ ├── AddMetersBatchImpl.java │ │ │ │ ├── ControlBundleImpl.java │ │ │ │ ├── ProcessFlatBatchImpl.java │ │ │ │ ├── RemoveFlowCallback.java │ │ │ │ ├── RemoveFlowsBatchImpl.java │ │ │ │ ├── RemoveGroupImpl.java │ │ │ │ ├── RemoveGroupsBatchImpl.java │ │ │ │ ├── RemoveMeterImpl.java │ │ │ │ ├── RemoveMetersBatchImpl.java │ │ │ │ ├── SalRoleRpc.java │ │ │ │ ├── SendBarrierImpl.java │ │ │ │ ├── SendExperimenterImpl.java │ │ │ │ ├── SendExperimenterMpRequestImpl.java │ │ │ │ ├── SetConfigImpl.java │ │ │ │ ├── TransmitPacketImpl.java │ │ │ │ ├── UpdateFlowCallback.java │ │ │ │ ├── UpdateFlowsBatchImpl.java │ │ │ │ ├── UpdateGroupImpl.java │ │ │ │ ├── UpdateGroupsBatchImpl.java │ │ │ │ ├── UpdateMeterImpl.java │ │ │ │ ├── UpdateMetersBatchImpl.java │ │ │ │ ├── UpdatePortImpl.java │ │ │ │ └── UpdateTableImpl.java │ │ │ ├── singlelayer │ │ │ │ ├── GetAsyncImpl.java │ │ │ │ ├── SetAsyncImpl.java │ │ │ │ ├── SingleAddFlow.java │ │ │ │ ├── SingleLayerAggregateFlowMultipartService.java │ │ │ │ ├── SingleLayerExperimenterMultipartService.java │ │ │ │ ├── SingleLayerFlowMultipartRequestOnTheFlyCallback.java │ │ │ │ ├── SingleLayerFlowService.java │ │ │ │ ├── SingleLayerGroupService.java │ │ │ │ ├── SingleLayerMeterService.java │ │ │ │ ├── SingleLayerMultipartCollectorService.java │ │ │ │ ├── SingleLayerMultipartRequestCallback.java │ │ │ │ ├── SingleLayerPortService.java │ │ │ │ ├── SingleLayerTableMultipartService.java │ │ │ │ ├── SingleRemoveFlow.java │ │ │ │ └── SingleUpdateFlow.java │ │ │ └── util │ │ │ │ ├── RequestContextUtil.java │ │ │ │ ├── RequestInputUtils.java │ │ │ │ └── ServiceException.java │ │ │ ├── statistics │ │ │ ├── StatisticsContextImpl.java │ │ │ ├── StatisticsGatheringUtils.java │ │ │ ├── StatisticsManagerImpl.java │ │ │ ├── StatisticsPollingService.java │ │ │ ├── TimeCounter.java │ │ │ ├── ofpspecific │ │ │ │ ├── EventsTimeCounter.java │ │ │ │ ├── MessageIntelligenceAgencyImpl.java │ │ │ │ ├── MessageIntelligenceAgencyMXBean.java │ │ │ │ └── SessionStatistics.java │ │ │ └── services │ │ │ │ ├── AggregateFlowsInTableService.java │ │ │ │ ├── AllFlowsInAllTablesService.java │ │ │ │ ├── AllFlowsInTableService.java │ │ │ │ ├── AllGroupsStatsService.java │ │ │ │ ├── AllMeterConfigStatsService.java │ │ │ │ ├── AllMeterStatsService.java │ │ │ │ ├── AllPortStatsService.java │ │ │ │ ├── AllQueuesAllPortsService.java │ │ │ │ ├── AllQueuesOnePortService.java │ │ │ │ ├── FlowsInTableService.java │ │ │ │ ├── GetAggregateFlowStatisticsFromFlowTableForGivenMatchImpl.java │ │ │ │ ├── GetAllGroupStatisticsImpl.java │ │ │ │ ├── GetAllMeterConfigStatisticsImpl.java │ │ │ │ ├── GetAllMeterStatisticsImpl.java │ │ │ │ ├── GetAllNodeConnectorsStatisticsImpl.java │ │ │ │ ├── GetAllQueuesStatisticsFromAllPortsImpl.java │ │ │ │ ├── GetAllQueuesStatisticsFromGivenPortImpl.java │ │ │ │ ├── GetFlowTablesStatisticsImpl.java │ │ │ │ ├── GetGroupDescriptionImpl.java │ │ │ │ ├── GetGroupFeaturesImpl.java │ │ │ │ ├── GetGroupStatisticsImpl.java │ │ │ │ ├── GetMeterFeaturesImpl.java │ │ │ │ ├── GetMeterStatisticsImpl.java │ │ │ │ ├── GetNodeConnectorStatisticsImpl.java │ │ │ │ ├── GetQueueStatisticsFromGivenPortImpl.java │ │ │ │ ├── GroupDescriptionService.java │ │ │ │ ├── GroupFeaturesService.java │ │ │ │ ├── GroupStatsService.java │ │ │ │ ├── MeterFeaturesService.java │ │ │ │ ├── MeterStatsService.java │ │ │ │ ├── OneQueueOnePortService.java │ │ │ │ ├── PortStatsService.java │ │ │ │ ├── compatibility │ │ │ │ ├── AbstractCompatibleStatService.java │ │ │ │ ├── FlowStatisticsToNotificationTransformer.java │ │ │ │ ├── GetAggregateFlowStatisticsFromFlowTableForAllFlowsImpl.java │ │ │ │ ├── GetAllFlowStatisticsFromFlowTableImpl.java │ │ │ │ ├── GetAllFlowsStatisticsFromAllFlowTablesImpl.java │ │ │ │ ├── GetFlowStatisticsFromFlowTableImpl.java │ │ │ │ ├── GroupStatisticsToNotificationTransformer.java │ │ │ │ ├── MeterStatisticsToNotificationTransformer.java │ │ │ │ ├── NodeConnectorStatisticsToNotificationTransformer.java │ │ │ │ └── QueueStatisticsToNotificationTransformer.java │ │ │ │ ├── dedicated │ │ │ │ ├── StatisticsGatheringOnTheFlyService.java │ │ │ │ └── StatisticsGatheringService.java │ │ │ │ └── direct │ │ │ │ ├── AbstractDirectStatisticsService.java │ │ │ │ ├── AbstractGetFlowStatistics.java │ │ │ │ ├── AbstractGetGroupStatistics.java │ │ │ │ ├── AbstractGetMeterStatistics.java │ │ │ │ ├── AbstractGetNodeConnectorStatistics.java │ │ │ │ ├── AbstractGetQueueStatistics.java │ │ │ │ ├── OpendaylightDirectStatisticsServiceProvider.java │ │ │ │ ├── multilayer │ │ │ │ ├── MultiGetFlowStatistics.java │ │ │ │ ├── MultiGetGroupStatistics.java │ │ │ │ ├── MultiGetMeterStatistics.java │ │ │ │ ├── MultiGetNodeConnectorStatistics.java │ │ │ │ └── MultiGetQueueStatistics.java │ │ │ │ └── singlelayer │ │ │ │ ├── SingleGetFlowStatistics.java │ │ │ │ ├── SingleGetGroupStatistics.java │ │ │ │ ├── SingleGetMeterStatistics.java │ │ │ │ ├── SingleGetNodeConnectorStatistics.java │ │ │ │ └── SingleGetQueueStatistics.java │ │ │ ├── translator │ │ │ ├── AggregatedFlowStatisticsTranslator.java │ │ │ ├── FlowRemovedTranslator.java │ │ │ ├── FlowRemovedV10Translator.java │ │ │ ├── PacketReceivedTranslator.java │ │ │ ├── PortUpdateTranslator.java │ │ │ ├── TranslatorKeyFactory.java │ │ │ └── TranslatorLibraryBuilder.java │ │ │ └── util │ │ │ ├── AddressNormalizationUtil.java │ │ │ ├── BarrierUtil.java │ │ │ ├── DeviceInitializationUtil.java │ │ │ ├── DeviceStateUtil.java │ │ │ ├── ErrorUtil.java │ │ │ ├── FlatBatchUtil.java │ │ │ ├── FlowCreatorUtil.java │ │ │ ├── FlowUtil.java │ │ │ ├── GroupUtil.java │ │ │ ├── MatchNormalizationUtil.java │ │ │ ├── MatchUtil.java │ │ │ ├── MessageFactory.java │ │ │ ├── MeterUtil.java │ │ │ ├── NodeConnectorRefToPortTranslator.java │ │ │ ├── PacketInUtil.java │ │ │ ├── PathUtil.java │ │ │ ├── PortTranslatorUtil.java │ │ │ ├── ThreadPoolLoggingExecutor.java │ │ │ └── TranslatorLibraryUtil.java │ └── resources │ │ └── OSGI-INF │ │ └── blueprint │ │ └── openflowplugin-impl.xml │ └── test │ ├── java │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── impl │ │ ├── OpenFlowPluginProviderImplTest.java │ │ ├── common │ │ ├── MultipartReplyTranslatorUtilTest.java │ │ └── MultipartRequestInputFactoryTest.java │ │ ├── configuration │ │ ├── ConfigurationServiceFactoryImplTest.java │ │ └── OpenFlowProviderConfigImplTest.java │ │ ├── connection │ │ ├── ConnectionContextImplTest.java │ │ ├── ConnectionManagerImplTest.java │ │ ├── ErrorHandlerSimpleImplTest.java │ │ ├── HandshakeManagerImplTest.java │ │ ├── OutboundQueueProviderImplTest.java │ │ ├── listener │ │ │ ├── HandshakeListenerImplTest.java │ │ │ ├── OpenflowProtocolListenerInitialImplTest.java │ │ │ └── SystemNotificationsListenerImplTest.java │ │ └── testutil │ │ │ └── MsgGeneratorTestUtils.java │ │ ├── device │ │ ├── DeviceContextImplTest.java │ │ ├── DeviceManagerImplTest.java │ │ ├── DeviceStateImplTest.java │ │ ├── PacketInRateLimiterTest.java │ │ ├── SwitchFeaturesUtilTest.java │ │ ├── initialization │ │ │ ├── DeviceInitializerProviderTest.java │ │ │ ├── OF10DeviceInitializerTest.java │ │ │ └── OF13DeviceInitializerTest.java │ │ └── listener │ │ │ ├── MultiMsgCollectorImplTest.java │ │ │ └── OpenflowProtocolListenerFullImplTest.java │ │ ├── karaf │ │ ├── AbstractCommandTest.java │ │ ├── ClearStatsCommandTest.java │ │ ├── ResetEventTimesCommandTest.java │ │ ├── ResetSessionStatsCommandTest.java │ │ ├── ShowEventTimesCommandTest.java │ │ ├── ShowSessionStatsCommandTest.java │ │ └── ShowStatsCommandrTest.java │ │ ├── lifecycle │ │ ├── ContextChainHolderImplTest.java │ │ └── ContextChainImplTest.java │ │ ├── mastership │ │ ├── MastershipChangeServiceManagerImplTest.java │ │ └── MastershipServiceDelegateTest.java │ │ ├── protocol │ │ ├── deserialization │ │ │ ├── AbstractDeserializerTest.java │ │ │ ├── MessageDeserializerInjectorTest.java │ │ │ ├── action │ │ │ │ ├── AbstractActionDeserializerTest.java │ │ │ │ ├── CopyTtlInActionDeserializerTest.java │ │ │ │ ├── CopyTtlOutActionDeserializerTest.java │ │ │ │ ├── DecMplsTtlActionDeserializerTest.java │ │ │ │ ├── DecNwTtlActionDeserializerTest.java │ │ │ │ ├── GroupActionDeserializerTest.java │ │ │ │ ├── OutputActionDeserializerTest.java │ │ │ │ ├── PopMplsActionDeserializerTest.java │ │ │ │ ├── PopPbbActionDeserializerTest.java │ │ │ │ ├── PopVlanActionDeserializerTest.java │ │ │ │ ├── PushMplsActionDeserializerTest.java │ │ │ │ ├── PushPbbActionDeserializerTest.java │ │ │ │ ├── PushVlanActionDeserializerTest.java │ │ │ │ ├── SetFieldActionDeserializerTest.java │ │ │ │ ├── SetMplsTtlActionDeserializerTest.java │ │ │ │ ├── SetNwTtlActionDeserializerTest.java │ │ │ │ └── SetQueueActionDeserializerTest.java │ │ │ ├── instruction │ │ │ │ ├── AbstractInstructionDeserializerTest.java │ │ │ │ ├── ApplyActionsInstructionDeserializerTest.java │ │ │ │ ├── ClearActionsInstructionDeserializerTest.java │ │ │ │ ├── GoToTableInstructionDeserializerTest.java │ │ │ │ ├── MeterInstructionDeserializerTest.java │ │ │ │ ├── WriteActionsInstructionDeserializerTest.java │ │ │ │ └── WriteMetadataInstructionDeserializerTest.java │ │ │ ├── match │ │ │ │ ├── AbstractMatchEntryDeserializerTest.java │ │ │ │ ├── ArpOpEntryDeserializerTest.java │ │ │ │ ├── ArpSourceHardwareAddressEntryDeserializerTest.java │ │ │ │ ├── ArpSourceTransportAddressEntryDeserializerTest.java │ │ │ │ ├── ArpTargetHardwareAddressEntryDeserializerTest.java │ │ │ │ ├── ArpTargetTransportAddressEntryDeserializerTest.java │ │ │ │ ├── EthernetDestinationEntryDeserializerTest.java │ │ │ │ ├── EthernetSourceEntryDeserializerTest.java │ │ │ │ ├── EthernetTypeEntryDeserializerTest.java │ │ │ │ ├── Icmpv4CodeEntryDeserializerTest.java │ │ │ │ ├── Icmpv4TypeEntryDeserializerTest.java │ │ │ │ ├── Icmpv6CodeEntryDeserializerTest.java │ │ │ │ ├── Icmpv6TypeEntryDeserializerTest.java │ │ │ │ ├── InPhyPortEntryDeserializerTest.java │ │ │ │ ├── InPortEntryDeserializerTest.java │ │ │ │ ├── IpDscpEntryDeserializerTest.java │ │ │ │ ├── IpEcnEntryDeserializerTest.java │ │ │ │ ├── IpProtoEntryDeserializerTest.java │ │ │ │ ├── Ipv4DestinationEntryDeserializerTest.java │ │ │ │ ├── Ipv4SourceEntryDeserializerTest.java │ │ │ │ ├── Ipv6DestinationEntryDeserializerTest.java │ │ │ │ ├── Ipv6ExtHeaderEntryDeserializerTest.java │ │ │ │ ├── Ipv6FlabelEntryDeserializerTest.java │ │ │ │ ├── Ipv6NdSllEntryDeserializerTest.java │ │ │ │ ├── Ipv6NdTargetEntryDeserializerTest.java │ │ │ │ ├── Ipv6NdTllEntryDeserializerTest.java │ │ │ │ ├── Ipv6SourceEntryDeserializerTest.java │ │ │ │ ├── MetadataEntryDeserializerTest.java │ │ │ │ ├── MplsBosEntryDeserializerTest.java │ │ │ │ ├── MplsLabelEntryDeserializerTest.java │ │ │ │ ├── MplsTcEntryDeserializerTest.java │ │ │ │ ├── PacketTypeEntryDeserializerTest.java │ │ │ │ ├── PbbEntryDeserializerTest.java │ │ │ │ ├── SctpDestinationPortEntryDeserializerTest.java │ │ │ │ ├── SctpSourcePortEntryDeserializerTest.java │ │ │ │ ├── TcpDestinationPortEntryDeserializerTest.java │ │ │ │ ├── TcpFlagsEntryDeserializerTest.java │ │ │ │ ├── TcpSourcePortEntryDeserializerTest.java │ │ │ │ ├── TunnelIdEntryDeserializerTest.java │ │ │ │ ├── UdpDestinationPortEntryDeserializerTest.java │ │ │ │ ├── UdpSourcePortEntryDeserializerTest.java │ │ │ │ ├── VlanPcpEntryDeserializerTest.java │ │ │ │ └── VlanVidEntryDeserializerTest.java │ │ │ ├── messages │ │ │ │ ├── FlowMessageDeserializerTest.java │ │ │ │ ├── GroupMessageDeserializerTest.java │ │ │ │ ├── MeterMessageDeserializerTest.java │ │ │ │ ├── PacketInMessageDeserializerTest.java │ │ │ │ └── PortMessageDeserializerTest.java │ │ │ └── multipart │ │ │ │ ├── AbstractMultipartDeserializerTest.java │ │ │ │ ├── MultipartReplyDescDeserializerTest.java │ │ │ │ ├── MultipartReplyFlowAggregateStatsDeserializerTest.java │ │ │ │ ├── MultipartReplyFlowStatsDeserializerTest.java │ │ │ │ ├── MultipartReplyFlowTableStatsDeserializerTest.java │ │ │ │ ├── MultipartReplyGroupDescDeserializerTest.java │ │ │ │ ├── MultipartReplyGroupFeaturesDeserializerTest.java │ │ │ │ ├── MultipartReplyGroupStatsDeserializerTest.java │ │ │ │ ├── MultipartReplyMessageDeserializerTest.java │ │ │ │ ├── MultipartReplyMeterConfigDeserializerTest.java │ │ │ │ ├── MultipartReplyMeterFeaturesDeserializerTest.java │ │ │ │ ├── MultipartReplyMeterStatsDeserializerTest.java │ │ │ │ ├── MultipartReplyPortDescDeserializerTest.java │ │ │ │ ├── MultipartReplyPortStatsDeserializerTest.java │ │ │ │ ├── MultipartReplyQueueStatsDeserializerTest.java │ │ │ │ ├── MultipartReplyTableFeaturesDeserializerTest.java │ │ │ │ └── TableFeaturesMatchFieldDeserializerTest.java │ │ └── serialization │ │ │ ├── AbstractSerializerTest.java │ │ │ ├── ActionSerializerInjectorTest.java │ │ │ ├── InstructionSerializerInjectorTest.java │ │ │ ├── MessageSerializerInjectorTest.java │ │ │ ├── actions │ │ │ ├── AbstractActionSerializerTest.java │ │ │ ├── AbstractSetFieldActionSerializerTest.java │ │ │ ├── CopyTtlInActionSerializerTest.java │ │ │ ├── CopyTtlOutActionSerializerTest.java │ │ │ ├── DecMplsTtlActionSerializerTest.java │ │ │ ├── DecNwTtlActionSerializerTest.java │ │ │ ├── GroupActionSerializerTest.java │ │ │ ├── OutputActionSerializerTest.java │ │ │ ├── PopMplsActionSerializerTest.java │ │ │ ├── PopPbbActionSerializerTest.java │ │ │ ├── PopVlanActionSerializerTest.java │ │ │ ├── PushMplsActionSerializerTest.java │ │ │ ├── PushPbbActionSerializerTest.java │ │ │ ├── PushVlanActionSerializerTest.java │ │ │ ├── SetDlDstActionSerializerTest.java │ │ │ ├── SetDlSrcActionSerializerTest.java │ │ │ ├── SetMplsTtlActionSerializerTest.java │ │ │ ├── SetNwDstActionSerializerTest.java │ │ │ ├── SetNwSrcActionSerializerTest.java │ │ │ ├── SetNwTosActionSerializerTest.java │ │ │ ├── SetNwTtlActionSerializerTest.java │ │ │ ├── SetQueueActionSerializerTest.java │ │ │ ├── SetTpDstActionSerializerTest.java │ │ │ ├── SetTpSrcActionSerializerTest.java │ │ │ ├── SetVlanIdActionSerializerTest.java │ │ │ ├── SetVlanPcpActionSerializerTest.java │ │ │ └── StripVlanActionSerializerTest.java │ │ │ ├── instructions │ │ │ ├── AbstractInstructionSerializerTest.java │ │ │ ├── ApplyActionsInstructionSerializerTest.java │ │ │ ├── ClearActionsInstructionSerializerTest.java │ │ │ ├── GoToTableInstructionSerializerTest.java │ │ │ ├── MeterInstructionSerializerTest.java │ │ │ ├── WriteActionsInstructionSerializerTest.java │ │ │ └── WriteMetadataInstructionSerializerTest.java │ │ │ ├── match │ │ │ ├── AbstractExperimenterMatchEntrySerializerTest.java │ │ │ ├── AbstractMatchEntrySerializerTest.java │ │ │ ├── ArpOpEntrySerializerTest.java │ │ │ ├── ArpSourceHardwareAddressEntrySerializerTest.java │ │ │ ├── ArpSourceTransportAddressEntrySerializerTest.java │ │ │ ├── ArpTargetHardwareAddressEntrySerializerTest.java │ │ │ ├── ArpTargetTransportAddressEntrySerializerTest.java │ │ │ ├── EthernetDestinationEntrySerializerTest.java │ │ │ ├── EthernetSourceEntrySerializerTest.java │ │ │ ├── EthernetTypeEntrySerializerTest.java │ │ │ ├── Icmpv4CodeEntrySerializerTest.java │ │ │ ├── Icmpv4TypeEntrySerializerTest.java │ │ │ ├── Icmpv6CodeEntrySerializerTest.java │ │ │ ├── Icmpv6TypeEntrySerializerTest.java │ │ │ ├── InPhyPortEntrySerializerTest.java │ │ │ ├── InPortEntrySerializerTest.java │ │ │ ├── IpDscpEntrySerializerTest.java │ │ │ ├── IpEcnEntrySerializerTest.java │ │ │ ├── IpProtoEntrySerializerTest.java │ │ │ ├── Ipv4ArbitraryBitMaskDestinationEntrySerializerTest.java │ │ │ ├── Ipv4ArbitraryBitMaskSourceEntrySerializerTest.java │ │ │ ├── Ipv4DestinationEntrySerializerTest.java │ │ │ ├── Ipv4SourceEntrySerializerTest.java │ │ │ ├── Ipv6ArbitraryBitMaskDestinationEntrySerializerTest.java │ │ │ ├── Ipv6ArbitraryBitMaskSourceEntrySerializerTest.java │ │ │ ├── Ipv6DestinationEntrySerializerTest.java │ │ │ ├── Ipv6ExtHeaderEntrySerializerTest.java │ │ │ ├── Ipv6LabelEntrySerializerTest.java │ │ │ ├── Ipv6NdSllEntrySerializerTest.java │ │ │ ├── Ipv6NdTargetEntrySerializerTest.java │ │ │ ├── Ipv6NdTllEntrySerializerTest.java │ │ │ ├── Ipv6SourceEntrySerializerTest.java │ │ │ ├── MetadataEntrySerializerTest.java │ │ │ ├── MplsBosEntrySerializerTest.java │ │ │ ├── MplsLabelEntrySerializerTest.java │ │ │ ├── MplsTcEntrySerializerTest.java │ │ │ ├── PacketTypeEntrySerializerTest.java │ │ │ ├── PbbEntrySerializerTest.java │ │ │ ├── SctpDestinationPortEntrySerializerTest.java │ │ │ ├── SctpSourcePortEntrySerializerTest.java │ │ │ ├── TcpDestinationPortEntrySerializerTest.java │ │ │ ├── TcpFlagsEntrySerializerTest.java │ │ │ ├── TcpSourcePortEntrySerializerTest.java │ │ │ ├── TunnelIdEntrySerializerTest.java │ │ │ ├── TunnelIpv4DestinationEntrySerializerTest.java │ │ │ ├── TunnelIpv4SourceEntrySerializerTest.java │ │ │ ├── UdpDestinationPortEntrySerializerTest.java │ │ │ ├── UdpSourcePortEntrySerializerTest.java │ │ │ ├── VlanPcpEntrySerializerTest.java │ │ │ └── VlanVidEntrySerializerTest.java │ │ │ ├── messages │ │ │ ├── AsyncConfigMessageSerializerTest.java │ │ │ ├── FlowMessageSerializerTest.java │ │ │ ├── GroupMessageSerializerTest.java │ │ │ ├── MeterMessageSerializerTest.java │ │ │ └── PortMessageSerializerTest.java │ │ │ └── multipart │ │ │ ├── MultipartRequestDescSerializerTest.java │ │ │ ├── MultipartRequestFlowAggregateStatsSerializerTest.java │ │ │ ├── MultipartRequestFlowStatsSerializerTest.java │ │ │ ├── MultipartRequestFlowTableStatsSerializerTest.java │ │ │ ├── MultipartRequestGroupDescSerializerTest.java │ │ │ ├── MultipartRequestGroupFeaturesSerializerTest.java │ │ │ ├── MultipartRequestGroupStatsSerializerTest.java │ │ │ ├── MultipartRequestMessageSerializerTest.java │ │ │ ├── MultipartRequestMeterConfigSerializerTest.java │ │ │ ├── MultipartRequestMeterFeaturesSerializerTest.java │ │ │ ├── MultipartRequestMeterStatsSerializerTest.java │ │ │ ├── MultipartRequestPortDescSerializerTest.java │ │ │ ├── MultipartRequestPortStatsSerializerTest.java │ │ │ ├── MultipartRequestQueueStatsSerializerTest.java │ │ │ ├── MultipartRequestTableFeaturesSerializerTest.java │ │ │ └── tablefeatures │ │ │ ├── AbstractTablePropertySerializerTest.java │ │ │ ├── ApplyActionsMissTablePropertySerializerTest.java │ │ │ ├── ApplyActionsTablePropertySerializerTest.java │ │ │ ├── ApplySetfieldMissTablePropertySerializerTest.java │ │ │ ├── ApplySetfieldTablePropertySerializerTest.java │ │ │ ├── InstructionsMissTablePropertySerializerTest.java │ │ │ ├── InstructionsTablePropertySerializerTest.java │ │ │ ├── MatchTablePropertySerializerTest.java │ │ │ ├── NextTableMissTablePropertySerializerTest.java │ │ │ ├── NextTableTablePropertySerializerTest.java │ │ │ ├── WildcardsTablePropertySerializerTest.java │ │ │ ├── WriteActionsMissTablePropertySerializerTest.java │ │ │ ├── WriteActionsTablePropertySerializerTest.java │ │ │ ├── WriteSetfieldMissTablePropertySerializerTest.java │ │ │ ├── WriteSetfieldTablePropertySerializerTest.java │ │ │ └── matchfield │ │ │ └── MatchFieldSerializerTest.java │ │ ├── registry │ │ ├── flow │ │ │ ├── DeviceFlowRegistryImplTest.java │ │ │ ├── FlowDescriptorDtoTest.java │ │ │ ├── FlowRegistryKeyFactoryTest.java │ │ │ └── TestFlowHelper.java │ │ ├── group │ │ │ └── DeviceGroupRegistryImplTest.java │ │ └── meter │ │ │ └── DeviceMeterRegistryImplTest.java │ │ ├── role │ │ └── RoleContextImplTest.java │ │ ├── rpc │ │ ├── AbstractRequestContextTest.java │ │ ├── RpcContextImplTest.java │ │ └── RpcManagerImplTest.java │ │ ├── services │ │ ├── AbstractRequestCallbackTest.java │ │ ├── MultipartRequestCallbackTest.java │ │ ├── MultipartRequestOnTheFlyCallbackTest.java │ │ ├── SendEchoImplTest.java │ │ ├── ServiceMocking.java │ │ ├── batch │ │ │ ├── FlatBatchFlowAdaptersTest.java │ │ │ ├── FlatBatchGroupAdaptersTest.java │ │ │ └── FlatBatchMeterAdaptersTest.java │ │ ├── sal │ │ │ ├── ProcessFlatBatchImplTest.java │ │ │ ├── SalAsyncConfigServiceImplTest.java │ │ │ ├── SalBundleServiceImplTest.java │ │ │ ├── SalEchoServiceImplTest.java │ │ │ ├── SalFlowServiceImplTest.java │ │ │ ├── SalFlowsBatchServiceImplTest.java │ │ │ ├── SalGroupServiceImplTest.java │ │ │ ├── SalGroupsBatchServiceImplTest.java │ │ │ ├── SalMeterServiceImplTest.java │ │ │ ├── SalMetersBatchServiceImplTest.java │ │ │ ├── SalRoleRpcTest.java │ │ │ ├── SendBarrierImplTest.java │ │ │ ├── SendExperimenterImplTest.java │ │ │ ├── SendExperimenterMpRequestImplTest.java │ │ │ ├── SetConfigImplTest.java │ │ │ ├── TransmitPacketImplTest.java │ │ │ ├── UpdatePortImplTest.java │ │ │ └── UpdateTableImplTest.java │ │ ├── singlelayer │ │ │ ├── SingleLayerAggregateFlowMultipartServiceTest.java │ │ │ ├── SingleLayerExperimenterMultipartServiceTest.java │ │ │ ├── SingleLayerFlowServiceTest.java │ │ │ ├── SingleLayerGroupServiceTest.java │ │ │ ├── SingleLayerMeterServiceTest.java │ │ │ ├── SingleLayerPortServiceTest.java │ │ │ └── SingleLayerTableMultipartServiceTest.java │ │ └── util │ │ │ ├── RequestContextUtilTest.java │ │ │ └── RequestInputUtilsTest.java │ │ ├── statistics │ │ ├── MultipartReplyTranslatorTest.java │ │ ├── StatisticsContextImpMockInitiation.java │ │ ├── StatisticsContextImplParamTest.java │ │ ├── StatisticsContextImplTest.java │ │ ├── StatisticsGatheringUtilsTest.java │ │ ├── StatisticsManagerImplTest.java │ │ ├── StatisticsPollingServiceTest.java │ │ ├── TimeCounterTest.java │ │ ├── ofpspecific │ │ │ └── MessageIntelligenceAgencyImplTest.java │ │ └── services │ │ │ ├── AbstractSingleStatsServiceTest.java │ │ │ ├── AbstractStatsServiceTest.java │ │ │ ├── GetFlowTablesStatisticsImplTest.java │ │ │ ├── OpendaylightFlowStatisticsServiceImpl2Test.java │ │ │ ├── OpendaylightGroupStatisticsServiceImplTest.java │ │ │ ├── OpendaylightMeterStatisticsServiceImplTest.java │ │ │ ├── OpendaylightPortStatisticsServiceImplTest.java │ │ │ ├── OpendaylightQueueStatisticsServiceImplTest.java │ │ │ ├── PortStatsServiceTest.java │ │ │ ├── compatibility │ │ │ ├── AbstractCompatibleStatServiceTest.java │ │ │ └── OpendaylightFlowStatisticsServiceDelegateImplTest.java │ │ │ ├── dedicated │ │ │ ├── StatisticsGatheringOnTheFlyServiceTest.java │ │ │ └── StatisticsGatheringServiceTest.java │ │ │ └── direct │ │ │ ├── AbstractDirectStatisticsServiceTest.java │ │ │ ├── multilayer │ │ │ ├── FlowDirectStatisticsServiceTest.java │ │ │ ├── GroupDirectStatisticsServiceTest.java │ │ │ ├── MeterDirectStatisticsServiceTest.java │ │ │ ├── NodeConnectorDirectStatisticsServiceTest.java │ │ │ └── QueueDirectStatisticsServiceTest.java │ │ │ └── singlelayer │ │ │ ├── FlowDirectStatisticsServiceTest.java │ │ │ ├── GroupDirectStatisticsServiceTest.java │ │ │ ├── MeterDirectStatisticsServiceTest.java │ │ │ ├── NodeConnectorDirectStatisticsServiceTest.java │ │ │ └── QueueDirectStatisticsServiceTest.java │ │ ├── translator │ │ ├── AggregatedFlowStatisticsTranslatorTest.java │ │ ├── FlowRemovedTranslatorTest.java │ │ ├── PacketReceivedTranslatorTest.java │ │ └── PortUpdateTranslatorTest.java │ │ └── util │ │ ├── AddressNormalizationUtilTest.java │ │ ├── BarrierUtilTest.java │ │ ├── DeviceInitializationUtilTest.java │ │ ├── DeviceStateUtilTest.java │ │ ├── FlatBatchUtilTest.java │ │ ├── FlowCreatorUtilTest.java │ │ ├── FlowUtilTest.java │ │ ├── GroupUtilTest.java │ │ ├── MatchNormalizationUtilTest.java │ │ ├── MatchUtilTest.java │ │ ├── MessageFactoryTest.java │ │ ├── MeterUtilTest.java │ │ ├── NodeConnectorRefToPortTranslatorTest.java │ │ ├── PacketInUtilTest.java │ │ ├── PathUtilTest.java │ │ ├── PortTranslatorUtilTest.java │ │ └── TranslatorLibratyUtilTest.java │ └── resources │ └── log4j.xml ├── openflowplugin-it ├── pom.xml └── src │ └── test │ ├── java │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── openflow │ │ └── md │ │ └── it │ │ ├── OFPaxOptionsAssistant.java │ │ ├── OFPluginFlowTest.java │ │ ├── OFPluginToLibraryTest.java │ │ ├── SalIntegrationTest.java │ │ ├── ScenarioFactory.java │ │ └── SimulatorAssistant.java │ └── resources │ └── controller.xml ├── openflowplugin ├── pom.xml └── src │ ├── main │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── openflow │ │ └── md │ │ ├── core │ │ ├── extension │ │ │ ├── ActionExtensionHelper.java │ │ │ ├── ExtensionConverterManagerImpl.java │ │ │ ├── ExtensionResolvers.java │ │ │ ├── MatchExtensionHelper.java │ │ │ └── RegistrationCloser.java │ │ ├── sal │ │ │ └── convertor │ │ │ │ ├── ConvertorExecutor.java │ │ │ │ ├── ConvertorManager.java │ │ │ │ ├── ConvertorManagerFactory.java │ │ │ │ ├── ConvertorRegistrator.java │ │ │ │ ├── GroupConvertor.java │ │ │ │ ├── GroupDescStatsResponseConvertor.java │ │ │ │ ├── GroupStatsResponseConvertor.java │ │ │ │ ├── MeterConfigStatsResponseConvertor.java │ │ │ │ ├── MeterConvertor.java │ │ │ │ ├── MeterStatsResponseConvertor.java │ │ │ │ ├── OFApprovedExperimenterIds.java │ │ │ │ ├── PacketOutConvertor.java │ │ │ │ ├── PortConvertor.java │ │ │ │ ├── TableFeaturesConvertor.java │ │ │ │ ├── TableFeaturesResponseConvertor.java │ │ │ │ ├── action │ │ │ │ ├── ActionConvertor.java │ │ │ │ ├── ActionResponseConvertor.java │ │ │ │ ├── cases │ │ │ │ │ ├── OfToSalCopyTtlInCase.java │ │ │ │ │ ├── OfToSalCopyTtlOutCase.java │ │ │ │ │ ├── OfToSalDecMplsTtlCase.java │ │ │ │ │ ├── OfToSalDecNwTtlCase.java │ │ │ │ │ ├── OfToSalGroupCase.java │ │ │ │ │ ├── OfToSalOutputActionCase.java │ │ │ │ │ ├── OfToSalPopMplsCase.java │ │ │ │ │ ├── OfToSalPopPbbCase.java │ │ │ │ │ ├── OfToSalPopVlanCase.java │ │ │ │ │ ├── OfToSalPushMplsCase.java │ │ │ │ │ ├── OfToSalPushPbbCase.java │ │ │ │ │ ├── OfToSalPushVlanCase.java │ │ │ │ │ ├── OfToSalSetDlDstCase.java │ │ │ │ │ ├── OfToSalSetDlSrcCase.java │ │ │ │ │ ├── OfToSalSetFieldCase.java │ │ │ │ │ ├── OfToSalSetMplsTtlCase.java │ │ │ │ │ ├── OfToSalSetNwDstCase.java │ │ │ │ │ ├── OfToSalSetNwSrcCase.java │ │ │ │ │ ├── OfToSalSetNwTosCase.java │ │ │ │ │ ├── OfToSalSetNwTtlCase.java │ │ │ │ │ ├── OfToSalSetQueueCase.java │ │ │ │ │ ├── OfToSalSetTpDstCase.java │ │ │ │ │ ├── OfToSalSetTpSrcCase.java │ │ │ │ │ ├── OfToSalSetVlanIdCase.java │ │ │ │ │ ├── OfToSalSetVlanPcpCase.java │ │ │ │ │ ├── OfToSalStripVlanCase.java │ │ │ │ │ ├── SalToOfCopyTtlInCase.java │ │ │ │ │ ├── SalToOfCopyTtlOutCase.java │ │ │ │ │ ├── SalToOfDecMplsTtlCase.java │ │ │ │ │ ├── SalToOfDecNwTtlCase.java │ │ │ │ │ ├── SalToOfDropActionCase.java │ │ │ │ │ ├── SalToOfGeneralExtensionGroupingCase.java │ │ │ │ │ ├── SalToOfGroupActionCase.java │ │ │ │ │ ├── SalToOfOutputActionCase.java │ │ │ │ │ ├── SalToOfPopMplsActionCase.java │ │ │ │ │ ├── SalToOfPopPbbActionCase.java │ │ │ │ │ ├── SalToOfPopVlanActionCase.java │ │ │ │ │ ├── SalToOfPopVlanActionV10Case.java │ │ │ │ │ ├── SalToOfPushMplsActionCase.java │ │ │ │ │ ├── SalToOfPushPbbActionCase.java │ │ │ │ │ ├── SalToOfPushVlanActionCase.java │ │ │ │ │ ├── SalToOfSetDlDstActionCase.java │ │ │ │ │ ├── SalToOfSetDlDstActionV10Case.java │ │ │ │ │ ├── SalToOfSetDlSrcActionCase.java │ │ │ │ │ ├── SalToOfSetDlSrcActionV10Case.java │ │ │ │ │ ├── SalToOfSetFieldCase.java │ │ │ │ │ ├── SalToOfSetFieldV10Case.java │ │ │ │ │ ├── SalToOfSetMplsTtlActionCase.java │ │ │ │ │ ├── SalToOfSetNwDstActionCase.java │ │ │ │ │ ├── SalToOfSetNwDstActionV10Case.java │ │ │ │ │ ├── SalToOfSetNwSrcActionCase.java │ │ │ │ │ ├── SalToOfSetNwSrcActionV10Case.java │ │ │ │ │ ├── SalToOfSetNwTosActionCase.java │ │ │ │ │ ├── SalToOfSetNwTosActionV10Case.java │ │ │ │ │ ├── SalToOfSetNwTtlActionCase.java │ │ │ │ │ ├── SalToOfSetQueueActionCase.java │ │ │ │ │ ├── SalToOfSetTpDstActionCase.java │ │ │ │ │ ├── SalToOfSetTpDstActionV10Case.java │ │ │ │ │ ├── SalToOfSetTpSrcActionCase.java │ │ │ │ │ ├── SalToOfSetTpSrcActionV10Case.java │ │ │ │ │ ├── SalToOfSetVlanIdActionCase.java │ │ │ │ │ ├── SalToOfSetVlanIdActionV10Case.java │ │ │ │ │ ├── SalToOfSetVlanPcpActionCase.java │ │ │ │ │ ├── SalToOfSetVlanPcpActionV10Case.java │ │ │ │ │ ├── SalToOfStripVlanActionCase.java │ │ │ │ │ ├── SalToOfStripVlanActionV10Case.java │ │ │ │ │ └── SalToOfVendorCodecCase.java │ │ │ │ └── data │ │ │ │ │ ├── ActionConvertorData.java │ │ │ │ │ └── ActionResponseConvertorData.java │ │ │ │ ├── common │ │ │ │ ├── ConvertReactor.java │ │ │ │ ├── ConvertReactorConvertor.java │ │ │ │ ├── Convertor.java │ │ │ │ ├── ConvertorCase.java │ │ │ │ ├── ConvertorData.java │ │ │ │ ├── ConvertorKey.java │ │ │ │ ├── ConvertorProcessor.java │ │ │ │ ├── IPProtocols.java │ │ │ │ ├── IpConversionUtil.java │ │ │ │ ├── OrderComparator.java │ │ │ │ └── ResultInjector.java │ │ │ │ ├── data │ │ │ │ ├── FlowStatsResponseConvertorData.java │ │ │ │ ├── VersionConvertorData.java │ │ │ │ ├── VersionDatapathIdConvertorData.java │ │ │ │ └── XidConvertorData.java │ │ │ │ ├── flow │ │ │ │ ├── FlowConvertor.java │ │ │ │ ├── FlowConvertorUtil.java │ │ │ │ ├── FlowFlagsConvertor.java │ │ │ │ ├── FlowFlagsInjector.java │ │ │ │ ├── FlowFlagsV10Convertor.java │ │ │ │ ├── FlowInstructionResponseConvertor.java │ │ │ │ ├── FlowStatsResponseConvertor.java │ │ │ │ └── cases │ │ │ │ │ ├── ApplyActionsCase.java │ │ │ │ │ ├── ClearActionsCase.java │ │ │ │ │ ├── GoToTableCase.java │ │ │ │ │ ├── MeterCase.java │ │ │ │ │ ├── WriteActionsCase.java │ │ │ │ │ └── WriteMetadataCase.java │ │ │ │ └── match │ │ │ │ ├── MatchConvertor.java │ │ │ │ ├── MatchConvertorUtil.java │ │ │ │ ├── MatchInjector.java │ │ │ │ ├── MatchResponseConvertor.java │ │ │ │ ├── MatchV10Convertor.java │ │ │ │ ├── MatchV10ResponseConvertor.java │ │ │ │ ├── cases │ │ │ │ ├── OfToSalArpOpCase.java │ │ │ │ ├── OfToSalArpShaCase.java │ │ │ │ ├── OfToSalArpSpaCase.java │ │ │ │ ├── OfToSalArpThaCase.java │ │ │ │ ├── OfToSalArpTpaCase.java │ │ │ │ ├── OfToSalEthDstCase.java │ │ │ │ ├── OfToSalEthSrcCase.java │ │ │ │ ├── OfToSalEthTypeCase.java │ │ │ │ ├── OfToSalExperimenterIdCase.java │ │ │ │ ├── OfToSalIcmpv4CodeCase.java │ │ │ │ ├── OfToSalIcmpv4TypeCase.java │ │ │ │ ├── OfToSalIcmpv6CodeCase.java │ │ │ │ ├── OfToSalIcmpv6TypeCase.java │ │ │ │ ├── OfToSalInPhyPortCase.java │ │ │ │ ├── OfToSalInPortCase.java │ │ │ │ ├── OfToSalIpDscpCase.java │ │ │ │ ├── OfToSalIpEcnCase.java │ │ │ │ ├── OfToSalIpProtoCase.java │ │ │ │ ├── OfToSalIpv4DstCase.java │ │ │ │ ├── OfToSalIpv4SrcCase.java │ │ │ │ ├── OfToSalIpv6DstCase.java │ │ │ │ ├── OfToSalIpv6ExthdrCase.java │ │ │ │ ├── OfToSalIpv6FlabelCase.java │ │ │ │ ├── OfToSalIpv6NdSllCase.java │ │ │ │ ├── OfToSalIpv6NdTargetCase.java │ │ │ │ ├── OfToSalIpv6NdTllCase.java │ │ │ │ ├── OfToSalIpv6SrcCase.java │ │ │ │ ├── OfToSalMetadataCase.java │ │ │ │ ├── OfToSalMplsBosCase.java │ │ │ │ ├── OfToSalMplsLabelCase.java │ │ │ │ ├── OfToSalMplsTcCase.java │ │ │ │ ├── OfToSalPacketTypeCase.java │ │ │ │ ├── OfToSalPbbIsidCase.java │ │ │ │ ├── OfToSalSctpDstCase.java │ │ │ │ ├── OfToSalSctpSrcCase.java │ │ │ │ ├── OfToSalTcpDstCase.java │ │ │ │ ├── OfToSalTcpSrcCase.java │ │ │ │ ├── OfToSalTunnelIdCase.java │ │ │ │ ├── OfToSalTunnelIpv4DstCase.java │ │ │ │ ├── OfToSalTunnelIpv4SrcCase.java │ │ │ │ ├── OfToSalUdpDstCase.java │ │ │ │ ├── OfToSalUdpSrcCase.java │ │ │ │ ├── OfToSalVlanPcpCase.java │ │ │ │ ├── OfToSalVlanVidCase.java │ │ │ │ ├── SalToOfArpMatchCase.java │ │ │ │ ├── SalToOfIpv4MatchArbitraryBitMaskCase.java │ │ │ │ ├── SalToOfIpv4MatchCase.java │ │ │ │ ├── SalToOfIpv6MatchArbitraryBitMaskCase.java │ │ │ │ ├── SalToOfIpv6MatchCase.java │ │ │ │ ├── SalToOfSctpMatchCase.java │ │ │ │ ├── SalToOfTcpMatchCase.java │ │ │ │ ├── SalToOfTunnelIpv4MatchCase.java │ │ │ │ └── SalToOfUdpMatchCase.java │ │ │ │ └── data │ │ │ │ └── MatchResponseConvertorData.java │ │ └── session │ │ │ ├── ExtensionSessionManagerImpl.java │ │ │ └── OFSessionUtil.java │ │ └── util │ │ ├── ActionUtil.java │ │ ├── ByteUtil.java │ │ ├── InventoryDataServiceUtil.java │ │ └── OpenflowPortsUtil.java │ └── test │ ├── java │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── openflow │ │ └── md │ │ ├── core │ │ ├── extension │ │ │ ├── ActionExtensionHelperTest.java │ │ │ ├── ExtensionConverterManagerImplTest.java │ │ │ └── MatchExtensionHelperTest.java │ │ ├── sal │ │ │ └── convertor │ │ │ │ ├── ConvertorManagerTest.java │ │ │ │ ├── GroupConvertorTest.java │ │ │ │ ├── GroupDescStatsResponseConvertorTest.java │ │ │ │ ├── GroupStatsResponseConvertorTest.java │ │ │ │ ├── MeterConfigStatsResponseConvertorTest.java │ │ │ │ ├── MeterConvertorTest.java │ │ │ │ ├── MeterStatsResponseConvertorTest.java │ │ │ │ ├── PacketOutConvertorTest.java │ │ │ │ ├── PortConvertorTest.java │ │ │ │ ├── TableFeaturesConvertorTest.java │ │ │ │ ├── TableFeaturesResponseConvertorTest.java │ │ │ │ ├── action │ │ │ │ ├── ActionConvertorTest.java │ │ │ │ ├── ActionConvertorV10Test.java │ │ │ │ └── ActionConvertorV13Test.java │ │ │ │ ├── common │ │ │ │ ├── IpConversionUtilTest.java │ │ │ │ └── OrderComparatorTest.java │ │ │ │ ├── flow │ │ │ │ ├── FlowConvertorTest.java │ │ │ │ └── FlowStatsResponseConvertorTest.java │ │ │ │ └── match │ │ │ │ ├── FlowWildcardsV10Builder.java │ │ │ │ ├── MatchConvertorTest.java │ │ │ │ ├── MatchConvertorUtilTest.java │ │ │ │ ├── MatchConvertorV10Test.java │ │ │ │ ├── MatchResponseConvertor2Test.java │ │ │ │ ├── MatchResponseConvertorTest.java │ │ │ │ └── MatchV10ResponseConvertorTest.java │ │ └── session │ │ │ └── ExtensionSessionManagerImplTest.java │ │ └── util │ │ ├── ActionUtilTest.java │ │ ├── ByteUtilTest.java │ │ ├── InventoryDataServiceUtilTest.java │ │ └── OpenflowPortsUtilTest.java │ └── resources │ └── log4j.xml ├── parent └── pom.xml ├── pom.xml ├── samples ├── learning-switch │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── learningswitch │ │ ├── DataTreeChangeListenerRegistrationHolder.java │ │ ├── FlowCommitWrapper.java │ │ ├── FlowCommitWrapperImpl.java │ │ ├── FlowUtils.java │ │ ├── InstanceIdentifierUtils.java │ │ ├── LearningSwitchHandler.java │ │ ├── LearningSwitchHandlerSimpleImpl.java │ │ ├── LearningSwitchManagerSimpleImpl.java │ │ ├── PacketUtils.java │ │ ├── WakeupOnNode.java │ │ └── multi │ │ ├── LearningSwitchManagerMultiImpl.java │ │ ├── MultipleLearningSwitchHandlerFacadeImpl.java │ │ └── PacketInDispatcherImpl.java ├── pom.xml ├── sample-bundles │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── samples │ │ └── sample │ │ └── bundles │ │ └── SampleFlowCapableNodeListener.java ├── sample-consumer │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── openflowplugin │ │ └── openflow │ │ └── samples │ │ └── consumer │ │ ├── SimpleDropFirewall.java │ │ └── SimpleDropFirewallCli.java └── simple-client │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── org │ │ └── opendaylight │ │ └── openflowjava │ │ └── protocol │ │ └── impl │ │ └── clients │ │ ├── CallableClient.java │ │ ├── ClientEvent.java │ │ ├── ClientSslContextFactory.java │ │ ├── ClientSslKeyStore.java │ │ ├── ClientSslTrustStore.java │ │ ├── EventType.java │ │ ├── ListeningSimpleClient.java │ │ ├── OFClient.java │ │ ├── Scenario.java │ │ ├── ScenarioFactory.java │ │ ├── ScenarioHandler.java │ │ ├── Scenarios.java │ │ ├── SendEvent.java │ │ ├── SimpleClient.java │ │ ├── SimpleClientFramer.java │ │ ├── SimpleClientHandler.java │ │ ├── SimpleClientInitializer.java │ │ ├── SleepEvent.java │ │ ├── Step.java │ │ ├── UdpSimpleClient.java │ │ ├── UdpSimpleClientFramer.java │ │ ├── UdpSimpleClientInitializer.java │ │ └── WaitForMessageEvent.java │ └── resources │ ├── selfSignedController │ └── selfSignedSwitch ├── srm ├── api │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── org │ │ │ └── opendaylight │ │ │ └── serviceutils │ │ │ └── srm │ │ │ ├── RecoverableListener.java │ │ │ ├── ServiceRecoveryInterface.java │ │ │ ├── ServiceRecoveryRegistry.java │ │ │ └── spi │ │ │ └── RegistryControl.java │ │ └── yang │ │ ├── srm-ops.yang │ │ ├── srm-rpcs.yang │ │ └── srm-types.yang ├── impl │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── opendaylight │ │ └── serviceutils │ │ └── srm │ │ └── impl │ │ ├── FutureRpcResults.java │ │ ├── RegistryControlImpl.java │ │ ├── ServiceRecoveryListener.java │ │ └── ServiceRecoveryRegistryImpl.java ├── pom.xml └── shell │ ├── pom.xml │ └── src │ └── main │ └── java │ └── org │ └── opendaylight │ └── serviceutils │ └── srm │ └── shell │ ├── RecoverCommand.java │ ├── ReinstallCommand.java │ ├── SrmCliUtils.java │ └── SrmDebugCommand.java ├── test-common ├── pom.xml └── src │ └── main │ └── java │ └── org │ └── opendaylight │ └── openflowplugin │ └── testcommon │ ├── AbstractDropTest.java │ ├── DropTest.java │ ├── DropTestCommiter.java │ ├── DropTestCommiterImpl.java │ ├── DropTestRpcSender.java │ ├── DropTestRpcSenderImpl.java │ └── DropTestStats.java ├── test-provider ├── pom.xml └── src │ └── main │ └── java │ └── org │ └── opendaylight │ └── openflowplugin │ └── test │ ├── FlowEventListenerLoggingImpl.java │ ├── OpenflowPluginBulkGroupTransactionProvider.java │ ├── OpenflowPluginBulkTransactionProvider.java │ ├── OpenflowpluginGroupTestCommandProvider.java │ ├── OpenflowpluginGroupTestRpcsProvider.java │ ├── OpenflowpluginMeterTestCommandProvider.java │ ├── OpenflowpluginMeterTestRpcsProvider.java │ ├── OpenflowpluginStatsTestCommandProvider.java │ ├── OpenflowpluginTableFeaturesTestCommandProvider.java │ ├── OpenflowpluginTableFeaturesTestRpcProvider.java │ ├── OpenflowpluginTestActivator.java │ ├── OpenflowpluginTestCommandProvider.java │ ├── OpenflowpluginTestNodeConnectorNotification.java │ ├── OpenflowpluginTestRpcProvider.java │ ├── OpenflowpluginTestTopologyNotification.java │ └── TestProviderTransactionUtil.java ├── test-scripts ├── README ├── __init__.py ├── action-keywords.csv ├── crud │ ├── __init__.py │ ├── odl_flow_test.py │ ├── odl_group_tests.py │ └── odl_meter_test.py ├── exceptions │ ├── __init__.py │ └── odl_exceptions.py ├── ignore-keywords.csv ├── keywords.csv ├── match-keywords.csv ├── odl_crud_tests.py ├── openvswitch │ ├── __init__.py │ ├── compare_tools.py │ ├── convertor_tools.py │ ├── flow_tools.py │ ├── mininet_tools.py │ ├── parser_tools.py │ ├── testclass_components.py │ ├── testclass_templates.py │ └── xml_validator.py ├── oper_data_test.py ├── stress_test.py ├── sw_restart_test.py ├── tools │ ├── __init__.py │ ├── crud_test_with_param_superclass.py │ ├── file_loader_tool.py │ ├── test_with_param_superclass.py │ └── xml_parser_tools.py ├── tox.ini └── xmls │ ├── ef26.xml │ ├── ef27.xml │ ├── ef28.xml │ ├── ef31.xml │ ├── ef45.xml │ ├── ef48.xml │ ├── ef49.xml │ ├── eg1.xml │ ├── f1.xml │ ├── f10.xml │ ├── f101.xml │ ├── f102.xml │ ├── f103.xml │ ├── f104.xml │ ├── f105.xml │ ├── f106.xml │ ├── f107.xml │ ├── f108.xml │ ├── f109.xml │ ├── f11.xml │ ├── f110.xml │ ├── f111.xml │ ├── f112.xml │ ├── f113.xml │ ├── f114.xml │ ├── f12.xml │ ├── f13.xml │ ├── f14.xml │ ├── f15.xml │ ├── f16.xml │ ├── f17.xml │ ├── f18.xml │ ├── f19.xml │ ├── f2.xml │ ├── f20.xml │ ├── f201.xml │ ├── f202.xml │ ├── f203.xml │ ├── f204.xml │ ├── f205.xml │ ├── f206.xml │ ├── f207.xml │ ├── f208.xml │ ├── f209.xml │ ├── f21.xml │ ├── f210.xml │ ├── f211.xml │ ├── f212.xml │ ├── f213.xml │ ├── f214.xml │ ├── f215.xml │ ├── f216.xml │ ├── f217.xml │ ├── f218.xml │ ├── f219.xml │ ├── f22.xml │ ├── f220.xml │ ├── f221.xml │ ├── f23.xml │ ├── f24.xml │ ├── f25.xml │ ├── f26.xml │ ├── f27.xml │ ├── f28.xml │ ├── f29.xml │ ├── f3.xml │ ├── f30.xml │ ├── f31.xml │ ├── f32.xml │ ├── f33.xml │ ├── f34.xml │ ├── f35.xml │ ├── f36.xml │ ├── f37.xml │ ├── f38.xml │ ├── f39.xml │ ├── f4.xml │ ├── f40.xml │ ├── f41.xml │ ├── f42.xml │ ├── f43.xml │ ├── f44.xml │ ├── f45.xml │ ├── f46.xml │ ├── f47.xml │ ├── f48.xml │ ├── f49.xml │ ├── f5.xml │ ├── f6.xml │ ├── f7.xml │ ├── f8.xml │ ├── f9.xml │ ├── g1.xml │ ├── g2.xml │ ├── g3.xml │ ├── m1.xml │ ├── m2.xml │ └── m3.xml ├── tox.ini └── vagrant └── mininet-2.1.0-of-1.3 ├── .vagrant └── machines │ └── default │ └── virtualbox │ ├── action_provision │ ├── action_set_name │ └── id ├── README ├── Vagrantfile ├── bootstrap.sh └── node.py.patch /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # SPDX-FileCopyrightText: 2025 The Linux Foundation 3 | # SPDX-License-Identifier: Apache-2.0 4 | 5 | # To get started with Dependabot version updates, you'll need to specify which 6 | # package ecosystems to update and where the package manifests are located. 7 | # Please see the documentation for all configuration options: 8 | # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file 9 | 10 | version: 2 11 | updates: 12 | - package-ecosystem: "github-actions" 13 | directory: "/" 14 | schedule: 15 | interval: "weekly" 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | target/ 3 | target-ide/ 4 | *.class 5 | *.iml 6 | **/target 7 | **/bin 8 | dist 9 | **/logs 10 | products 11 | repository 12 | workspace 13 | *~ 14 | .classpath 15 | .project 16 | .settings 17 | MANIFEST.MF 18 | xtend-gen 19 | yang-gen-sal 20 | yang-gen-config 21 | .externalToolBuilders 22 | maven-eclipse.xml 23 | .metadata/ 24 | .checkstyle 25 | maven-metadata-local.xml 26 | *.pyc 27 | /.pydevproject 28 | *.log 29 | .tox/ 30 | nbactions.xml 31 | nb-configuration.xml 32 | .fbExcludeFilterFile 33 | .factorypath 34 | -------------------------------------------------------------------------------- /.gitreview: -------------------------------------------------------------------------------- 1 | [gerrit] 2 | host=git.opendaylight.org 3 | port=29418 4 | project=openflowplugin.git 5 | defaultbranch=master 6 | -------------------------------------------------------------------------------- /.readthedocs.yml: -------------------------------------------------------------------------------- 1 | # .readthedocs.yml 2 | # Read the Docs configuration file 3 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details 4 | 5 | # Required 6 | version: 2 7 | 8 | build: 9 | os: ubuntu-22.04 10 | tools: 11 | python: "3.11" 12 | jobs: 13 | post_checkout: 14 | - git fetch --unshallow || true 15 | 16 | sphinx: 17 | configuration: docs/conf.py 18 | 19 | python: 20 | install: 21 | - requirements: docs/requirements.txt 22 | -------------------------------------------------------------------------------- /applications/arbitratorreconciliation/api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | org.opendaylight.openflowplugin 6 | openflowplugin-parent 7 | 0.20.2-SNAPSHOT 8 | ../../../parent 9 | 10 | 11 | org.opendaylight.openflowplugin.applications 12 | arbitratorreconciliation-api 13 | bundle 14 | 15 | 16 | 17 | org.opendaylight.openflowplugin 18 | openflowplugin-extension-api 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /applications/arbitratorreconciliation/impl/src/main/java/org/opendaylight/openflowplugin/applications/arbitratorreconciliation/impl/UpgradeState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Red Hat, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.applications.arbitratorreconciliation.impl; 9 | 10 | /** 11 | * This service is only intended to be used by code that 12 | * needs to accommodate the full replay based upgrade. 13 | */ 14 | public interface UpgradeState { 15 | 16 | boolean isUpgradeInProgress(); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /applications/arbitratorreconciliation/impl/src/main/yang/upgrade-config.yang: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2018 Red Hat Inc. and others. All rights reserved. 3 | 4 | This program and the accompanying materials are made available under the 5 | terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | module odl-serviceutils-upgrade { 10 | yang-version 1.1; 11 | namespace "urn:opendaylight:serviceutils:upgrade"; 12 | prefix 'srv-upgrade'; 13 | 14 | revision "2018-07-02" { 15 | description "Serviceutils upgrade config models"; 16 | } 17 | 18 | container upgrade-config { 19 | leaf upgradeInProgress { 20 | type boolean; 21 | default false; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /applications/arbitratorreconciliation/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | 6 | org.opendaylight.odlparent 7 | odlparent-lite 8 | 14.1.3 9 | 10 | 11 | 12 | org.opendaylight.openflowplugin.applications 13 | arbitratorreconciliation-aggregator 14 | 0.20.2-SNAPSHOT 15 | pom 16 | ODL :: openflowplugin :: ${project.artifactId} 17 | 18 | 19 | true 20 | true 21 | 22 | 23 | 24 | api 25 | impl 26 | 27 | 28 | -------------------------------------------------------------------------------- /applications/device-ownership-service/src/main/java/org/opendaylight/openflowplugin/applications/deviceownershipservice/DeviceOwnershipService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.applications.deviceownershipservice; 9 | 10 | public interface DeviceOwnershipService { 11 | /** 12 | * Method is used to check if the node is the entity owner of the switch. 13 | * @return true if the node is the owner of the switch , 14 | * false if either the switch is owned by some other node or if the cluster is in Jeopardy 15 | */ 16 | boolean isEntityOwned(String nodeId); 17 | } -------------------------------------------------------------------------------- /applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/FlowNodeConnectorInventoryTranslator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.applications.frm; 9 | 10 | import java.math.BigInteger; 11 | 12 | public interface FlowNodeConnectorInventoryTranslator { 13 | 14 | boolean isNodeConnectorUpdated(BigInteger dpId, String portName); 15 | } 16 | -------------------------------------------------------------------------------- /applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/ReconciliationJMXServiceMBean.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.applications.frm; 10 | 11 | import java.util.Map; 12 | 13 | public interface ReconciliationJMXServiceMBean { 14 | /* The MapKey is datapathId 15 | The MapValue is ReconciliationStates of the respective nodes. 16 | */ 17 | Map acquireReconciliationStates(); 18 | } -------------------------------------------------------------------------------- /applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/recovery/OpenflowServiceRecoveryHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.applications.frm.recovery; 10 | 11 | /** 12 | * OpenflowServiceRecoveryHandler is the generic interface which provides 13 | * facility to generate key for service recovery for openflowplugin. 14 | */ 15 | 16 | public interface OpenflowServiceRecoveryHandler { 17 | String buildServiceRegistryKey(); 18 | } 19 | -------------------------------------------------------------------------------- /applications/forwardingrules-manager/src/main/yang/forwardingrules-manager-config.yang: -------------------------------------------------------------------------------- 1 | module forwarding-rules-manager-config { 2 | yang-version 1; 3 | namespace "urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config"; 4 | prefix "frm"; 5 | 6 | description 7 | "Configuration for Forwarding Rules Manager application.."; 8 | 9 | revision "2016-05-11" { 10 | description 11 | "Initial revision."; 12 | } 13 | 14 | container forwarding-rules-manager-config { 15 | leaf disable-reconciliation { 16 | type boolean; 17 | default false; 18 | } 19 | 20 | leaf stale-marking-enabled { 21 | type boolean; 22 | default false; 23 | } 24 | 25 | leaf reconciliation-retry-count { 26 | type uint16; 27 | default 5; 28 | } 29 | 30 | leaf bundle-based-reconciliation-enabled { 31 | type boolean; 32 | default false; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /applications/forwardingrules-manager/src/main/yang/frm-reconciliation.yang: -------------------------------------------------------------------------------- 1 | module frm-reconciliation { 2 | 3 | namespace "urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service"; 4 | prefix frm-reconciliation; 5 | 6 | import opendaylight-inventory {prefix inv; revision-date "2013-08-19";} 7 | 8 | revision "2018-02-27" { 9 | description "Initial revision of trigger based frm reconciliation"; 10 | } 11 | 12 | rpc reconcile-node { 13 | description "Executes reconciliation between the controller and node"; 14 | input { 15 | uses "inv:node-context-ref"; 16 | leaf nodeId { 17 | type uint64; 18 | } 19 | } 20 | 21 | output { 22 | leaf result { 23 | description "The result of reconciliation, for follow-up"; 24 | type boolean; 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /applications/forwardingrules-sync/src/main/java/org/opendaylight/openflowplugin/applications/frsync/ForwardingRulesCommitter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.applications.frsync; 9 | 10 | import org.opendaylight.yangtools.binding.DataObject; 11 | 12 | /** 13 | * Represents configuration item contract for device. 14 | * Combining add/update/remove commiters into single one. 15 | */ 16 | public interface ForwardingRulesCommitter extends ForwardingRulesAddCommitter, 18 | ForwardingRulesRemoveCommitter, ForwardingRulesUpdateCommitter { 19 | } 20 | -------------------------------------------------------------------------------- /applications/forwardingrules-sync/src/main/java/org/opendaylight/openflowplugin/applications/frsync/NodeListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.applications.frsync; 9 | 10 | import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; 11 | import org.opendaylight.yangtools.binding.DataObject; 12 | 13 | /** 14 | * Unifying listener for data and event changes on node. 15 | */ 16 | public interface NodeListener extends DataTreeChangeListener { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /applications/forwardingrules-sync/src/main/java/org/opendaylight/openflowplugin/applications/frsync/dao/FlowCapableNodeDao.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.applications.frsync.dao; 9 | 10 | import java.util.Optional; 11 | import org.eclipse.jdt.annotation.NonNull; 12 | import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; 13 | import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; 14 | 15 | /** 16 | * Data access object for {@link FlowCapableNode}. 17 | */ 18 | public interface FlowCapableNodeDao { 19 | Optional loadByNodeId(@NonNull NodeId nodeId); 20 | } 21 | -------------------------------------------------------------------------------- /applications/forwardingrules-sync/src/test/resources/log4j.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /applications/lldp-speaker/src/main/yang/lldp-speaker-config.yang: -------------------------------------------------------------------------------- 1 | module lldp-speaker-config { 2 | yang-version 1; 3 | namespace "urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config"; 4 | prefix "lldp-speaker-config"; 5 | 6 | import ietf-yang-types {prefix yang; revision-date "2013-07-15";} 7 | 8 | description 9 | "Configuration for LLDP speaker application."; 10 | 11 | revision "2016-05-12" { 12 | description 13 | "Initial revision."; 14 | } 15 | 16 | container lldp-speaker-config { 17 | leaf address-destination { 18 | type yang:mac-address; 19 | mandatory true; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /applications/reconciliation-framework/src/main/java/org/opendaylight/openflowplugin/applications/reconciliation/NotificationRegistration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.applications.reconciliation; 10 | 11 | /* 12 |  * Interface to be returned after services registers itself with reconciliation framework 13 |  * Services call close() on NotificationRegistration for unregister 14 |  */ 15 | public interface NotificationRegistration extends AutoCloseable { 16 | } 17 | -------------------------------------------------------------------------------- /applications/reconciliation-framework/src/main/java/org/opendaylight/openflowplugin/applications/reconciliation/impl/ReconciliationServiceDelegate.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.applications.reconciliation.impl; 10 | 11 | import org.opendaylight.openflowplugin.applications.reconciliation.NotificationRegistration; 12 | 13 | public class ReconciliationServiceDelegate implements NotificationRegistration { 14 | 15 | private final AutoCloseable unregisterService; 16 | 17 | public ReconciliationServiceDelegate(AutoCloseable unregisterService) { 18 | this.unregisterService = unregisterService; 19 | } 20 | 21 | @Override 22 | public void close() throws Exception { 23 | this.unregisterService.close(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/DpnTracker.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 PANTHEON.tech, s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.applications.southboundcli; 9 | 10 | import java.util.List; 11 | import org.opendaylight.openflowplugin.applications.southboundcli.util.OFNode; 12 | 13 | public interface DpnTracker { 14 | 15 | List currentNodes(); 16 | } 17 | -------------------------------------------------------------------------------- /applications/topology-manager/src/main/java/org/opendaylight/openflowplugin/applications/topology/manager/TopologyOperation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.applications.topology.manager; 9 | 10 | import org.opendaylight.openflowplugin.common.txchain.TransactionChainManager; 11 | 12 | /** 13 | * Internal interface for submitted operations. Implementations of this 14 | * interface are enqueued and batched into data store transactions. 15 | */ 16 | interface TopologyOperation { 17 | /** 18 | * Execute the operation on top of the transaction. 19 | * 20 | * @param manager Datastore transaction manager 21 | */ 22 | void applyOperation(TransactionChainManager manager); 23 | } -------------------------------------------------------------------------------- /docs/_static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/docs/_static/logo.png -------------------------------------------------------------------------------- /docs/conf.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | # SPDX-License-Identifier: EPL-1.0 4 | ############################################################################## 5 | # Copyright (c) 2018 The Linux Foundation and others. 6 | # 7 | # All rights reserved. This program and the accompanying materials 8 | # are made available under the terms of the Eclipse Public License v1.0 9 | # which accompanies this distribution, and is available at 10 | # http://www.eclipse.org/legal/epl-v10.html 11 | ############################################################################## 12 | 13 | from docs_conf.conf import * 14 | 15 | # Append to intersphinx_mapping 16 | #intersphinx_mapping['odl-releng-builder'] = ('http://docs.opendaylight.org/projects/releng-builder/en/latest/', None) 17 | 18 | linkcheck_ignore = [ 19 | # Ignore jenkins because it's often slow to respond. 20 | 'https://jenkins.opendaylight.org/releng', 21 | 'https://jenkins.opendaylight.org/sandbox', 22 | ] 23 | 24 | nitpicky = True 25 | -------------------------------------------------------------------------------- /docs/conf.yaml: -------------------------------------------------------------------------------- 1 | project_cfg: opendaylight 2 | project: ODL OpenFlowPlugin 3 | version: Scandium 4 | -------------------------------------------------------------------------------- /docs/devs/index.rst: -------------------------------------------------------------------------------- 1 | Openflowplugin Developer Guides 2 | =============================== 3 | 4 | Contents: 5 | 6 | .. toctree:: 7 | :maxdepth: 1 8 | 9 | Plugin Guide 10 | Library Guide 11 | -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/docs/favicon.ico -------------------------------------------------------------------------------- /docs/images/500px-UdpChannelPipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/docs/images/500px-UdpChannelPipeline.png -------------------------------------------------------------------------------- /docs/images/800px-Extensibility.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/docs/images/800px-Extensibility.png -------------------------------------------------------------------------------- /docs/images/800px-Extensibility2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/docs/images/800px-Extensibility2.png -------------------------------------------------------------------------------- /docs/images/Library_lifecycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/docs/images/Library_lifecycle.png -------------------------------------------------------------------------------- /docs/images/odl-ofp-add-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/docs/images/odl-ofp-add-flow.png -------------------------------------------------------------------------------- /docs/images/odl-ofp-feature-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/docs/images/odl-ofp-feature-tree.png -------------------------------------------------------------------------------- /docs/images/odl-ofp-handshake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/docs/images/odl-ofp-handshake.png -------------------------------------------------------------------------------- /docs/images/odl-ofp-ofplugin-debug-stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/docs/images/odl-ofp-ofplugin-debug-stats.png -------------------------------------------------------------------------------- /docs/images/odl-ofp-session-establishment.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/docs/images/odl-ofp-session-establishment.jpg -------------------------------------------------------------------------------- /docs/images/plugin_arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/docs/images/plugin_arch.png -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | .. Openflowplugin documentation master file, created by 2 | sphinx-quickstart on Wed Nov 15 21:47:32 2017. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Openflowplugin Documentation 7 | ============================ 8 | 9 | Contents: 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | 14 | users/index 15 | devs/index 16 | specs/index 17 | testplans/index 18 | -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | lfdocs-conf 2 | -------------------------------------------------------------------------------- /docs/specs/index.rst: -------------------------------------------------------------------------------- 1 | Openflowplugin Design Specifications 2 | ==================================== 3 | 4 | Contents: 5 | 6 | .. toctree:: 7 | :maxdepth: 1 8 | 9 | reconciliation-framework 10 | group-add-mod 11 | bundle-reconciliation 12 | southbound-cli 13 | reconciliation-cli 14 | arbitrator-reconciliation 15 | device-connection-rate-limiter 16 | openflowplugin-event-logger 17 | -------------------------------------------------------------------------------- /docs/testplans/index.rst: -------------------------------------------------------------------------------- 1 | Openflowplugin Test Plans 2 | ========================= 3 | 4 | Contents: 5 | 6 | .. toctree:: 7 | :maxdepth: 1 8 | 9 | Bundles Resync 10 | Testplan Template 11 | -------------------------------------------------------------------------------- /docs/testplans/topologies/default-topology.txt: -------------------------------------------------------------------------------- 1 | +--------+ +--------+ 2 | | BR1 | data | BR2 | 3 | | <-------> | 4 | +---^----+ +----^---+ 5 | | mgmt | 6 | +---v-----------------v---+ 7 | | | 8 | | ODL | 9 | | | 10 | | Bundle Resync enabled | 11 | | | 12 | +-------------------------+ 13 | -------------------------------------------------------------------------------- /docs/testplans/topologies/dummy-topology.txt: -------------------------------------------------------------------------------- 1 | +------------+ 2 | | Dummy | 3 | | Topology | 4 | +------------+ 5 | -------------------------------------------------------------------------------- /docs/users/index.rst: -------------------------------------------------------------------------------- 1 | Openflowplugin User Guides 2 | ========================== 3 | 4 | Contents: 5 | 6 | .. toctree:: 7 | :maxdepth: 1 8 | 9 | Architecture 10 | Installation 11 | Operation 12 | Flow examples 13 | -------------------------------------------------------------------------------- /docs/users/installation.rst: -------------------------------------------------------------------------------- 1 | .. _ofp-installation: 2 | 3 | OpenFlow Plugin Installation 4 | ============================ 5 | 6 | OpenFlow Plugin installation follows standard OpenDaylight installation procedure 7 | described in install-odl_. 8 | 9 | Next sections describe typical OpenFlow user and test features. For a complete list 10 | of available features check the OpenFlow Plugin Release Notes. 11 | 12 | Typical User features 13 | --------------------- 14 | 15 | - **odl-openflowplugin-flow-services-rest**: OF plugin with REST API. 16 | - **odl-openflowplugin-app-table-miss-enforcer**: Adds default flow to controller. 17 | - **odl-openflowplugin-nxm-extensions**: Nicira extensions for OVS. 18 | 19 | Typical Test features 20 | --------------------- 21 | 22 | - **odl-openflowplugin-app-table-miss-enforcer**: Adds default flow to controller. 23 | - **odl-openflowplugin-drop-test**: Test application for pushing flows on packet-in. 24 | - **odl-openflowplugin-app-bulk-o-matic**: Test application for pushing bulk flows. 25 | 26 | .. _install-odl: https://docs.opendaylight.org/en/latest/getting-started-guide/installing_opendaylight.html 27 | 28 | -------------------------------------------------------------------------------- /extension/openflowjava-extension-eric/src/main/java/org/opendaylight/openflowjava/eric/api/EricConstants.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowjava.eric.api; 9 | 10 | public final class EricConstants { 11 | /** Experimenter ID of ONF approved extensions. */ 12 | public static final int ERICOXM_OF_EXPERIMENTER_ID = 0x1000; 13 | 14 | /** ERICOXM_OF_ICMPV6_ND_RESERVED message type. */ 15 | public static final int ERICOXM_OF_ICMPV6_ND_RESERVED = 1; 16 | 17 | /** ERICOXM_OF_ICMPV6_ND_OPTION_TYPE message type. */ 18 | public static final int ERICOXM_OF_ICMPV6_ND_OPTIONS_TYPE = 2; 19 | 20 | private EricConstants() { 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /extension/openflowjava-extension-nicira-api/src/main/java/org/opendaylight/openflowjava/nx/api/NiciraConstants.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014, 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowjava.nx.api; 9 | 10 | import org.opendaylight.yangtools.yang.common.Uint32; 11 | 12 | public final class NiciraConstants { 13 | 14 | public static final Uint32 NX_VENDOR_ID = Uint32.valueOf(0x00002320L).intern(); 15 | 16 | public static final Uint32 NX_NSH_VENDOR_ID = Uint32.valueOf(0x005AD650L).intern(); 17 | 18 | private NiciraConstants() { 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /extension/openflowjava-extension-nicira-api/src/main/java/org/opendaylight/openflowjava/nx/api/NiciraUtil.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowjava.nx.api; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.keys.ActionSerializerKey; 11 | 12 | /** 13 | * Nicira utilities. 14 | * 15 | * @author msunal 16 | */ 17 | public final class NiciraUtil { 18 | private NiciraUtil() { 19 | 20 | } 21 | 22 | public static ActionSerializerKey createOfJavaKeyFrom(NiciraActionSerializerKey key) { 23 | return new ActionSerializerKey<>(key.getVersion(), key.getSubtype(), NiciraConstants.NX_VENDOR_ID); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /extension/openflowjava-extension-nicira/src/test/java/org/opendaylight/openflowjava/nx/codec/action/TestsCodecStub.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Hewlett-Packard Enterprise and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowjava.nx.codec.action; 9 | 10 | import io.netty.buffer.ByteBuf; 11 | import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action; 12 | 13 | public class TestsCodecStub extends AbstractActionCodec { 14 | @Override 15 | public void serialize(Action input, ByteBuf outBuffer) { 16 | // TODO Auto-generated method stub 17 | 18 | } 19 | 20 | @Override 21 | public Action deserialize(ByteBuf message) { 22 | // TODO Auto-generated method stub 23 | return null; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /extension/openflowplugin-extension-api/src/main/java/org/opendaylight/openflowplugin/extension/api/OpenFlowPluginExtensionRegistratorProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.extension.api; 10 | 11 | /** 12 | * Created by mirehak on 4/25/15. 13 | */ 14 | public interface OpenFlowPluginExtensionRegistratorProvider { 15 | 16 | /** 17 | * Returns the extensionConverterRegistry - here extension converters can be registered in order to support 18 | * vendor messages. 19 | * @return extensionConverterRegistrator 20 | */ 21 | ExtensionConverterRegistrator getExtensionConverterRegistrator(); 22 | } 23 | -------------------------------------------------------------------------------- /extension/openflowplugin-extension-api/src/main/java/org/opendaylight/openflowplugin/extension/api/core/extension/ExtensionConverterManager.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.extension.api.core.extension; 9 | 10 | import org.opendaylight.openflowplugin.extension.api.ExtensionConverterRegistrator; 11 | 12 | /** 13 | * Unifying interface. 14 | */ 15 | public interface ExtensionConverterManager extends ExtensionConverterProvider, ExtensionConverterRegistrator { 16 | // see parents 17 | } 18 | -------------------------------------------------------------------------------- /extension/openflowplugin-extension-api/src/main/java/org/opendaylight/openflowplugin/extension/api/exception/ConversionException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.extension.api.exception; 10 | 11 | /** 12 | * General exception for conversion related operations. 13 | */ 14 | public class ConversionException extends Exception { 15 | public ConversionException(String message) { 16 | super(message); 17 | } 18 | 19 | public ConversionException(String message, Throwable cause) { 20 | super(message, cause); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /extension/openflowplugin-extension-api/src/main/java/org/opendaylight/openflowplugin/extension/api/exception/ConverterNotFoundException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.extension.api.exception; 10 | 11 | /** 12 | * For case when converter is not available. 13 | */ 14 | public class ConverterNotFoundException extends ConversionException { 15 | 16 | public ConverterNotFoundException(String message) { 17 | super(message); 18 | } 19 | 20 | public ConverterNotFoundException(String message, Throwable cause) { 21 | super(message, cause); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /extension/openflowplugin-extension-api/src/main/java/org/opendaylight/openflowplugin/extension/api/exception/ExperimenterConversionException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.extension.api.exception; 10 | 11 | /** 12 | * For case when conversion fails. 13 | */ 14 | public class ExperimenterConversionException extends ConversionException { 15 | 16 | public ExperimenterConversionException(String message) { 17 | super(message); 18 | } 19 | 20 | public ExperimenterConversionException(String message, Throwable cause) { 21 | super(message, cause); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /extension/openflowplugin-extension-api/src/main/java/org/opendaylight/openflowplugin/extension/api/path/AugmentationPath.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.extension.api.path; 9 | 10 | import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.grouping.Extension; 11 | import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; 12 | 13 | /** 14 | * Interface for an extension augmentation path. 15 | * 16 | * @author msunal 17 | */ 18 | public interface AugmentationPath { 19 | 20 | InstanceIdentifier getInstanceIdentifier(); 21 | } 22 | -------------------------------------------------------------------------------- /extension/openflowplugin-extension-api/src/main/yang/openflowplugin-experimenter-types.yang: -------------------------------------------------------------------------------- 1 | module openflowplugin-experimenter-types { 2 | namespace "urn:opendaylight:openflowplugin:experimenter:types"; 3 | prefix exp-type; 4 | 5 | import opendaylight-multipart-types { prefix multipart; revision-date "2017-01-12"; } 6 | 7 | revision "2015-10-20" { 8 | description "Initial revision of experimenter basic types"; 9 | } 10 | 11 | grouping experimenter-core-message { 12 | choice experimenter-message-of-choice { 13 | // to be augmented by vendors 14 | } 15 | } 16 | 17 | augment "/multipart:multipart-reply/multipart:multipart-reply-body" { 18 | case multipart-reply-experimenter { 19 | uses experimenter-core-message; 20 | } 21 | } 22 | 23 | augment "/multipart:multipart-request/multipart:multipart-request-body" { 24 | case multipart-request-experimenter { 25 | uses experimenter-core-message; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /extension/openflowplugin-extension-api/src/main/yang/sal-experimenter-mp-message.yang: -------------------------------------------------------------------------------- 1 | module sal-experimenter-mp-message { 2 | namespace "urn:opendaylight:experimenter-mp-message:service"; 3 | prefix exp-mp-msg; 4 | 5 | import opendaylight-inventory {prefix inv;revision-date "2013-08-19";} 6 | import openflowplugin-experimenter-types {prefix exp-type;revision-date "2015-10-20";} 7 | 8 | description "Openflow multipart experimenter message service."; 9 | 10 | revision "2015-10-20" { 11 | description "Initial revision of experimenter multipart message service"; 12 | } 13 | 14 | rpc send-experimenter-mp-request { 15 | description "Send experimenter multipart request to device, expecting reply."; 16 | input { 17 | uses "inv:node-context-ref"; 18 | uses exp-type:experimenter-core-message; 19 | } 20 | output { 21 | list experimenter-core-message-item { 22 | uses exp-type:experimenter-core-message; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /extension/openflowplugin-extension-eric/src/main/resources/org/opendaylight/blueprint/openflowplugin-extension-eric.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /extension/test-extension/src/main/yang/test.yang: -------------------------------------------------------------------------------- 1 | module test { 2 | namespace "urn:opendaylight:test"; 3 | prefix test; 4 | 5 | revision "2013-08-19" { 6 | description "Initial revision of flow service"; 7 | } 8 | 9 | rpc test-flow { 10 | input { 11 | leaf dummy { 12 | type string; 13 | } 14 | } 15 | /* 16 | input { 17 | uses tr:transaction-metadata; 18 | leaf flow-ref { 19 | type types:flow-ref; 20 | } 21 | uses node-flow; 22 | } 23 | output { 24 | uses tr:transaction-aware; 25 | } 26 | */ 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /features/odl-openflowjava-protocol/src/main/feature/feature.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | odl-yangtools-netty 6 | odl-mdsal-model-rfc6991 7 | odl-infrautils-diagstatus 8 | 9 | 10 | -------------------------------------------------------------------------------- /features/odl-openflowplugin-eric-extensions/src/main/features/features.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /features/odl-openflowplugin-flow-services-rest/src/main/feature/feature.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | odl-restconf 5 | 6 | 7 | -------------------------------------------------------------------------------- /features/odl-openflowplugin-libraries/src/main/feature/feature.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | odl-apache-commons-lang3 5 | odl-guava 6 | 7 | 8 | -------------------------------------------------------------------------------- /features/odl-openflowplugin-nsf-model/src/main/feature/feature.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | odl-mdsal-model-draft-clemm-netmod-yang-network-topo-01-minimal 5 | odl-mdsal-model-odl-l2-types 6 | 7 | 8 | -------------------------------------------------------------------------------- /features/odl-openflowplugin-nxm-extensions/src/main/features/features.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /libraries/liblldp/src/main/java/org/opendaylight/openflowplugin/libraries/liblldp/BufferException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.libraries.liblldp; 9 | 10 | /** 11 | * Describes an exception that is raised during BitBufferHelper operations. 12 | */ 13 | public class BufferException extends Exception { 14 | private static final long serialVersionUID = 1L; 15 | 16 | public BufferException(final String message) { 17 | super(message); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libraries/liblldp/src/main/java/org/opendaylight/openflowplugin/libraries/liblldp/PacketException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.libraries.liblldp; 9 | 10 | /** 11 | * Describes an exception that is raised when the process of serializing or 12 | * deserializing a network packet/stream fails. This generally happens when the 13 | * packet/stream is malformed. 14 | * 15 | */ 16 | public class PacketException extends Exception { 17 | private static final long serialVersionUID = 1L; 18 | 19 | public PacketException(final String message) { 20 | super(message); 21 | } 22 | 23 | public PacketException(String message, Throwable cause) { 24 | super(message, cause); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /libraries/liblldp/src/test/resources/log4j.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /libraries/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | 6 | org.opendaylight.odlparent 7 | odlparent-lite 8 | 14.1.3 9 | 10 | 11 | 12 | org.opendaylight.openflowplugin 13 | libraries-aggregator 14 | 0.20.2-SNAPSHOT 15 | pom 16 | 17 | 18 | true 19 | true 20 | 21 | 22 | 23 | liblldp 24 | 25 | 26 | -------------------------------------------------------------------------------- /model/model-flow-base/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/flow/types/port/rev130925/PortNumberUniBuilder.java: -------------------------------------------------------------------------------- 1 | package org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925; 2 | 3 | import org.opendaylight.yangtools.yang.common.Uint32; 4 | 5 | /** 6 | * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation. 7 | * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32). 8 | * 9 | * The reason behind putting it under src/main/java is: 10 | * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent 11 | * loss of user code. 12 | * 13 | */ 14 | public class PortNumberUniBuilder { 15 | 16 | public static PortNumberUni getDefaultInstance(String defaultValue) { 17 | try { 18 | return new PortNumberUni(Uint32.valueOf(defaultValue)); 19 | } catch (IllegalArgumentException e) { 20 | return new PortNumberUni(defaultValue); 21 | } 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /model/model-flow-base/src/main/yang/opendaylight-multipart-types.yang: -------------------------------------------------------------------------------- 1 | module opendaylight-multipart-types { 2 | namespace "urn:opendaylight:multipart:types"; 3 | prefix multipart; 4 | 5 | import openflow-protocol { prefix ofproto; revision-date "2013-07-31"; } 6 | 7 | revision "2017-01-12" { 8 | description "Initial revision"; 9 | } 10 | 11 | grouping multipart-header { 12 | uses ofproto:ofHeader; 13 | 14 | leaf request-more { 15 | type boolean; 16 | default false; 17 | } 18 | } 19 | 20 | container multipart-reply { 21 | uses multipart-header; 22 | 23 | choice multipart-reply-body { 24 | } 25 | } 26 | 27 | container multipart-request { 28 | uses multipart-header; 29 | 30 | choice multipart-request-body { 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /model/model-flow-service/src/main/yang/barrier-common.yang: -------------------------------------------------------------------------------- 1 | module barrier-common { 2 | namespace "urn:opendaylight:service:barrier:common"; 3 | prefix barrier-common; 4 | 5 | description "Openflow barrier for services - common groupings."; 6 | 7 | revision "2016-03-15" { 8 | description "Initial revision of batch common groupings."; 9 | } 10 | 11 | grouping barrier-suffix { 12 | description "Flag indicating that barrier will be attached after some service-specific action."; 13 | 14 | leaf barrier-after { 15 | type boolean; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /model/model-flow-service/src/main/yang/batch-common.yang: -------------------------------------------------------------------------------- 1 | module batch-common { 2 | namespace "urn:opendaylight:service:batch:common"; 3 | prefix batch-common; 4 | 5 | description "Openflow batch services - common groupings."; 6 | 7 | revision "2016-03-22" { 8 | description "Initial revision of batch common groupings."; 9 | } 10 | 11 | grouping batch-order-grouping { 12 | description "provide unified batch order value"; 13 | leaf batch-order { 14 | type uint16; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /model/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 4.0.0 5 | 6 | 7 | org.opendaylight.odlparent 8 | odlparent-lite 9 | 14.1.3 10 | 11 | 12 | 13 | org.opendaylight.openflowplugin.model 14 | model-aggregator 15 | 0.20.2-SNAPSHOT 16 | pom 17 | 18 | 19 | true 20 | true 21 | 22 | 23 | 24 | model-flow-base 25 | model-flow-service 26 | model-flow-statistics 27 | model-inventory 28 | model-topology 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/connection/ConnectionReadyListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowjava.protocol.api.connection; 10 | 11 | /** 12 | * Listener that is notified when a switch connection is ready. 13 | * 14 | * @author mirehak 15 | */ 16 | public interface ConnectionReadyListener { 17 | 18 | /** 19 | * Fired when connection becomes ready-to-use. 20 | */ 21 | void onConnectionReady(); 22 | } 23 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/connection/ListeningStatusProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowjava.protocol.api.connection; 10 | 11 | import java.util.concurrent.Future; 12 | 13 | /** 14 | * For testing purposes. 15 | * 16 | * @author mirehak 17 | */ 18 | public interface ListeningStatusProvider { 19 | 20 | /** 21 | * Determines if the plugin has successfully started. 22 | * 23 | * @return future holding startup result of all library instances under plugin's control 24 | */ 25 | Future isOnline(); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/connection/OutboundQueueHandlerRegistration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowjava.protocol.api.connection; 9 | 10 | import com.google.common.annotations.Beta; 11 | import org.opendaylight.yangtools.concepts.ObjectRegistration; 12 | 13 | /** 14 | * An {@link ObjectRegistration} of a {@link OutboundQueueHandler}. Registration can be cancelled 15 | * by invoking {@link #close()}. 16 | * 17 | * @param Handler type 18 | */ 19 | @Beta 20 | public interface OutboundQueueHandlerRegistration extends ObjectRegistration { 21 | @Override 22 | void close(); 23 | } 24 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/connection/StatisticsConfiguration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowjava.protocol.api.connection; 10 | 11 | /** 12 | * Used for StatisticsCounter configuration. 13 | * 14 | * @author madamjak 15 | */ 16 | public interface StatisticsConfiguration { 17 | 18 | /** 19 | * Determines if statistics are enabled. 20 | * 21 | * @return true if statistics are / will be collected, false otherwise 22 | */ 23 | boolean getStatisticsCollect(); 24 | 25 | /** 26 | * Returns the delay between two statistics logs. 27 | * 28 | * @return delay between two statistics logs (in milliseconds) 29 | */ 30 | int getLogReportDelay(); 31 | } 32 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/connection/ThreadConfiguration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowjava.protocol.api.connection; 10 | 11 | /** 12 | * Threading configuration. 13 | * 14 | * @author michal.polkorab 15 | */ 16 | public interface ThreadConfiguration { 17 | 18 | /** 19 | * Returns the desired number of Openflow I/O worker threads. 20 | * 21 | * @return desired number of worker threads processing the Openflow I/O 22 | */ 23 | int getWorkerThreadCount(); 24 | 25 | /** 26 | * Returns the desired number of incoming Openflow connection threads. 27 | * 28 | * @return desired number of bossThreads registering incoming Openflow connections 29 | */ 30 | int getBossThreadCount(); 31 | } 32 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/AlienMessageListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowjava.protocol.api.extensibility; 9 | 10 | import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader; 11 | 12 | public interface AlienMessageListener { 13 | 14 | /** 15 | * Handler for alien but successfully deserialized messages for device. 16 | * 17 | * @param message alien message 18 | * @return true if alien message was successfully processed 19 | */ 20 | boolean onAlienMessage(OfHeader message); 21 | } 22 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/DeserializerRegistryInjector.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowjava.protocol.api.extensibility; 9 | 10 | /** 11 | * Injects registries. 12 | * 13 | * @author michal.polkorab 14 | */ 15 | public interface DeserializerRegistryInjector { 16 | 17 | /** 18 | * Injects deserializer registry into deserializer. 19 | * 20 | * @param deserializerRegistry registry of deserializers 21 | */ 22 | void injectDeserializerRegistry(DeserializerRegistry deserializerRegistry); 23 | } 24 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/HeaderDeserializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowjava.protocol.api.extensibility; 9 | 10 | import io.netty.buffer.ByteBuf; 11 | import org.opendaylight.yangtools.binding.DataContainer; 12 | 13 | /** 14 | * Deserializes headers. 15 | * 16 | * @author michal.polkorab 17 | * @param output message type 18 | */ 19 | public interface HeaderDeserializer extends OFGeneralDeserializer { 20 | 21 | /** 22 | * Deserializes a byte message headers. 23 | * 24 | * @param rawMessage message as bytes in ByteBuf 25 | * @return POJO/DTO 26 | */ 27 | E deserializeHeader(ByteBuf rawMessage); 28 | } 29 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/OFDeserializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowjava.protocol.api.extensibility; 9 | 10 | import io.netty.buffer.ByteBuf; 11 | import org.opendaylight.yangtools.binding.DataContainer; 12 | 13 | /** 14 | * Uniform interface for deserializing factories. 15 | * 16 | * @author michal.polkorab 17 | * @author timotej.kubas 18 | * @param message code type 19 | */ 20 | public interface OFDeserializer extends OFGeneralDeserializer { 21 | 22 | /** 23 | * Transforms byte message into POJO/DTO (of type E). 24 | * 25 | * @param message message as bytes in ByteBuf 26 | * @return POJO/DTO 27 | */ 28 | E deserialize(ByteBuf message); 29 | } 30 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/OFGeneralDeserializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowjava.protocol.api.extensibility; 9 | 10 | /** 11 | * Unifying super interface for a general deserializer. 12 | * 13 | * @author michal.polkorab 14 | */ 15 | public interface OFGeneralDeserializer { 16 | 17 | // empty unifying interface 18 | } 19 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/OFGeneralSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowjava.protocol.api.extensibility; 9 | 10 | /** 11 | * Unifying super interface for a general derializer. 12 | * 13 | * @author michal.polkorab 14 | * */ 15 | public interface OFGeneralSerializer { 16 | 17 | // empty unifying superinterface 18 | } 19 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/SerializerRegistryInjector.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowjava.protocol.api.extensibility; 9 | 10 | /** 11 | * Serializer registry injector. 12 | * 13 | * @author michal.polkorab 14 | */ 15 | public interface SerializerRegistryInjector { 16 | 17 | /** 18 | * Injects serializer registry. 19 | * 20 | * @param serializerRegistry registry instance 21 | */ 22 | void injectSerializerRegistry(SerializerRegistry serializerRegistry); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterDeserializerKey.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowjava.protocol.api.keys; 10 | 11 | /** 12 | * Marker interface - marks keys appropriate for experimenter deserializer registration. 13 | * 14 | * @author michal.polkorab 15 | */ 16 | public interface ExperimenterDeserializerKey { 17 | // only empty marker interface - to ease extensions registration 18 | } 19 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/keys/ExperimenterSerializerKey.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowjava.protocol.api.keys; 10 | 11 | /** 12 | * Marker interface - marks keys appropriate for experimenter serializer registration. 13 | * 14 | * @author michal.polkorab 15 | */ 16 | public interface ExperimenterSerializerKey { 17 | // only empty marker interface - to ease extensions registration 18 | } 19 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-api/src/main/yang/openflow-approved-extensions.yang: -------------------------------------------------------------------------------- 1 | module openflow-approved-extensions { 2 | namespace "urn:opendaylight:openflow:approved:extensions"; 3 | prefix "ofext"; 4 | 5 | import odl-codegen-extensions { prefix oce; } 6 | import openflow-extensible-match { prefix oxm; } 7 | import openflow-augments { prefix aug; } 8 | 9 | revision "2016-08-02" { 10 | description "Openflow approved extensions definition"; 11 | } 12 | 13 | //ONF Approved OpenFlow Extensions 14 | // Extension 109 - TCP FLAGS 15 | identity tcp_flags { 16 | base oxm:match-field; 17 | description "TCP flags from the TCP header"; 18 | } 19 | 20 | augment "/oxm:oxm-container/oxm:match-entry-value/aug:experimenter-id-case" { 21 | oce:augment-identifier "tcp-flags-container"; 22 | container tcp-flags { 23 | leaf flags { 24 | type uint16; 25 | } 26 | leaf mask { 27 | type binary; 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/ConnectionInitializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowjava.protocol.impl.core; 10 | 11 | /** 12 | * Interface for a connection initializer. 13 | * 14 | * @author martin.uhlir 15 | */ 16 | public interface ConnectionInitializer { 17 | 18 | /** 19 | * Initiates connection towards device. 20 | * 21 | * @param host - host IP 22 | * @param port - port number 23 | */ 24 | void initiateConnection(String host, int port); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/connection/ConnectionFacade.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | 10 | package org.opendaylight.openflowjava.protocol.impl.core.connection; 11 | 12 | import org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter; 13 | 14 | /** 15 | * Unifying super interface for a connection. 16 | * 17 | * @author michal.polkorab 18 | */ 19 | public interface ConnectionFacade extends MessageConsumer, ConnectionAdapter { 20 | 21 | // empty unifying superinterface 22 | } 23 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/connection/MessageConsumer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | 10 | package org.opendaylight.openflowjava.protocol.impl.core.connection; 11 | 12 | import org.opendaylight.yangtools.binding.DataObject; 13 | 14 | /** 15 | * Interface for a message consumer. 16 | * 17 | * @author mirehak 18 | */ 19 | public interface MessageConsumer { 20 | 21 | /** 22 | * Invoked to consume a message. 23 | * 24 | * @param message to process 25 | */ 26 | void consume(DataObject message); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/connection/OutboundQueueHandlerRegistrationImpl.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowjava.protocol.impl.core.connection; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.connection.OutboundQueueHandler; 11 | import org.opendaylight.openflowjava.protocol.api.connection.OutboundQueueHandlerRegistration; 12 | import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; 13 | 14 | abstract class OutboundQueueHandlerRegistrationImpl 15 | extends AbstractObjectRegistration implements OutboundQueueHandlerRegistration { 16 | protected OutboundQueueHandlerRegistrationImpl(final T instance) { 17 | super(instance); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/core/connection/SimpleRpcListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowjava.protocol.impl.core.connection; 9 | 10 | import org.opendaylight.yangtools.binding.DataObject; 11 | 12 | final class SimpleRpcListener extends AbstractRpcListener { 13 | SimpleRpcListener(final Object message, final String failureInfo) { 14 | super(message, failureInfo); 15 | } 16 | 17 | @Override 18 | protected void operationSuccessful() { 19 | successfulRpc(null); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/CodeKeyMaker.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowjava.protocol.impl.util; 10 | 11 | import io.netty.buffer.ByteBuf; 12 | import org.opendaylight.openflowjava.protocol.api.keys.MessageCodeKey; 13 | 14 | /** 15 | * Interface for making code keys. 16 | * 17 | * @author michal.polkorab 18 | */ 19 | public interface CodeKeyMaker { 20 | 21 | /** 22 | * Makes a code key. 23 | * 24 | * @param input buffer that will be the needed data gathered from 25 | * @return key for deserializer lookup 26 | */ 27 | MessageCodeKey make(ByteBuf input); 28 | } 29 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/TypeKeyMaker.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowjava.protocol.impl.util; 10 | 11 | import org.opendaylight.openflowjava.protocol.api.keys.MessageTypeKey; 12 | 13 | /** 14 | * Interface for a type key maker. 15 | * 16 | * @author michal.polkorab 17 | * @param type the key maker is based on 18 | */ 19 | public interface TypeKeyMaker { 20 | 21 | /** 22 | * Makes a MessageTypeKey. 23 | * 24 | * @param entry the entry for which to create the key 25 | * @return key that will be used for serializer lookup in the serializer registry 26 | */ 27 | MessageTypeKey make(T entry); 28 | } 29 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-impl/src/main/resources/exemplary-ctlKeystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/openflowjava/openflow-protocol-impl/src/main/resources/exemplary-ctlKeystore -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-impl/src/main/resources/exemplary-ctlTrustStore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/openflowjava/openflow-protocol-impl/src/main/resources/exemplary-ctlTrustStore -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-impl/src/test/resources/key.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/openflowjava/openflow-protocol-impl/src/test/resources/key.bin -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-impl/src/test/resources/selfSignedController: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/openflowjava/openflow-protocol-impl/src/test/resources/selfSignedController -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-impl/src/test/resources/selfSignedSwitch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/openflowjava/openflow-protocol-impl/src/test/resources/selfSignedSwitch -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-it/src/test/resources/log4j.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /openflowjava/openflow-protocol-spi/src/main/java/org/opendaylight/openflowjava/protocol/spi/statistics/StatisticsHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowjava.protocol.spi.statistics; 10 | 11 | /** 12 | * Used for JConsole service. 13 | * 14 | * @author michal.polkorab 15 | */ 16 | public interface StatisticsHandler { 17 | 18 | /** 19 | * Resets all counters. 20 | */ 21 | void resetCounters(); 22 | 23 | /** 24 | * Returns statistics. 25 | */ 26 | String printStatistics(); 27 | } 28 | -------------------------------------------------------------------------------- /openflowjava/openflowjava-blueprint-config/src/main/resources/initial/default-openflow-connection-config.xml: -------------------------------------------------------------------------------- 1 | 2 | openflow-switch-connection-provider-default-impl 3 | 6653 4 | TCP 5 | false 6 | 1024 7 | 8 | configuration/ssl/ctl.jks 9 | JKS 10 | PATH 11 | opendaylight 12 | configuration/ssl/truststore.jks 13 | JKS 14 | PATH 15 | opendaylight 16 | opendaylight 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /openflowjava/openflowjava-blueprint-config/src/main/resources/initial/legacy-openflow-connection-config.xml: -------------------------------------------------------------------------------- 1 | 2 | openflow-switch-connection-provider-legacy-impl 3 | 6633 4 | TCP 5 | false 6 | 1024 7 | 8 | configuration/ssl/ctl.jks 9 | JKS 10 | PATH 11 | opendaylight 12 | configuration/ssl/truststore.jks 13 | JKS 14 | PATH 15 | opendaylight 16 | opendaylight 17 | 18 | 19 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/ConnectionException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api; 9 | 10 | /** 11 | * Created by Martin Bobak mbobak@cisco.com on 7/8/14. 12 | */ 13 | public class ConnectionException extends Exception { 14 | private static final long serialVersionUID = 1L; 15 | 16 | public ConnectionException(final String message) { 17 | super(message); 18 | } 19 | 20 | public ConnectionException(final String message, final Throwable cause) { 21 | super(message, cause); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/FlowGroupCacheManager.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow; 9 | 10 | import java.util.Map; 11 | 12 | public interface FlowGroupCacheManager { 13 | 14 | Map getReconciliationStates(); 15 | } 16 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/FlowGroupInfoHistories.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow; 9 | 10 | import com.google.common.annotations.Beta; 11 | import java.util.Map; 12 | import org.eclipse.jdt.annotation.NonNull; 13 | import org.eclipse.jdt.annotation.Nullable; 14 | import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; 15 | 16 | @Beta 17 | public interface FlowGroupInfoHistories { 18 | 19 | @NonNull Map getAllFlowGroupHistories(); 20 | 21 | @Nullable FlowGroupInfoHistory getFlowGroupHistory(@NonNull NodeId nodeId); 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/FlowGroupInfoHistory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow; 9 | 10 | import com.google.common.annotations.Beta; 11 | import java.util.Collection; 12 | import org.eclipse.jdt.annotation.NonNullByDefault; 13 | 14 | @Beta 15 | @NonNullByDefault 16 | public interface FlowGroupInfoHistory { 17 | 18 | Collection readEntries(); 19 | } 20 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/FlowGroupStatus.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow; 9 | 10 | public enum FlowGroupStatus { 11 | ADDED, 12 | MODIFIED, 13 | REMOVED 14 | } -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/configuration/ConfigurationListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.configuration; 10 | 11 | import org.eclipse.jdt.annotation.NonNull; 12 | 13 | /** 14 | * Listens for changes in OpenFlowPlugin configuration. 15 | */ 16 | public interface ConfigurationListener { 17 | 18 | /** 19 | * Method invoked on configuration property change. 20 | * 21 | * @param propertyName the property name 22 | * @param propertyValue the property value 23 | */ 24 | void onPropertyChanged(@NonNull String propertyName, @NonNull String propertyValue); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/configuration/ConfigurationServiceFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.configuration; 9 | 10 | import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.provider.config.rev160510.OpenflowProviderConfig; 11 | 12 | /** 13 | * Factory for creating ConfigurationService instances. 14 | */ 15 | public interface ConfigurationServiceFactory { 16 | ConfigurationService newInstance(OpenflowProviderConfig providerConfig); 17 | } 18 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/connection/ConnectionStatus.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.connection; 9 | 10 | /** 11 | * Define all possible states of connection after handshake. 12 | */ 13 | public enum ConnectionStatus { 14 | 15 | // this flag should be return if no connection on this node exists 16 | MAY_CONTINUE, 17 | 18 | // this flag should be return if node still connected but not in termination state 19 | ALREADY_CONNECTED, 20 | 21 | // this flag should be return if node still connected but already in termination state 22 | CLOSING, 23 | 24 | //Flag used when auxiliary connection incomming but there is no primary connection 25 | REFUSING_AUXILIARY_CONNECTION 26 | } 27 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/connection/HandshakeContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.connection; 9 | 10 | import java.util.concurrent.ExecutorService; 11 | import org.opendaylight.openflowplugin.api.openflow.md.core.HandshakeManager; 12 | 13 | /** 14 | * OF handshake context holder. 15 | */ 16 | public interface HandshakeContext extends AutoCloseable { 17 | 18 | /** 19 | * Getter. 20 | * @return handshakeManager 21 | */ 22 | HandshakeManager getHandshakeManager(); 23 | 24 | /** 25 | * Getter. 26 | * @return handshake pool 27 | */ 28 | ExecutorService getHandshakePool(); 29 | 30 | @Override 31 | void close(); 32 | } 33 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/connection/OutboundQueueProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.connection; 10 | 11 | import org.opendaylight.openflowjava.protocol.api.connection.OutboundQueue; 12 | import org.opendaylight.openflowjava.protocol.api.connection.OutboundQueueHandler; 13 | 14 | /** 15 | * Outbound queue provider. 16 | */ 17 | public interface OutboundQueueProvider extends OutboundQueue, OutboundQueueHandler { 18 | 19 | } 20 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/MessageTranslator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.device; 9 | 10 | /** 11 | * Message translator. 12 | * 13 | * @param input message 14 | * @param output message 15 | */ 16 | public interface MessageTranslator { 17 | 18 | /** 19 | * Translates from input to output. 20 | * @param input input 21 | * @param deviceInfo node information 22 | * @param connectionDistinguisher connection distinguisher 23 | * @return message of output type 24 | */ 25 | O translate(I input, DeviceInfo deviceInfo, Object connectionDistinguisher); 26 | } 27 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/RequestContextStack.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.device; 9 | 10 | import org.eclipse.jdt.annotation.Nullable; 11 | 12 | /** 13 | * Request context stack. 14 | */ 15 | public interface RequestContextStack { 16 | /** 17 | * Method returns new request context for current request. 18 | * @return A request context, or null if one cannot be created. 19 | */ 20 | @Nullable RequestContext createRequestContext(); 21 | } 22 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/RequestFutureContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.device; 10 | 11 | import com.google.common.util.concurrent.ListenableFuture; 12 | import org.opendaylight.yangtools.yang.common.RpcResult; 13 | 14 | /** 15 | * Request context. 16 | * @param rpc result type 17 | */ 18 | public interface RequestFutureContext { 19 | /** 20 | * Method returns future to be used for handling device requests. 21 | * @return rpc result 22 | */ 23 | ListenableFuture> getFuture(); 24 | 25 | void setResult(RpcResult result); 26 | } 27 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/TranslatorLibrary.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.device; 10 | 11 | import org.opendaylight.openflowplugin.api.openflow.md.core.TranslatorKey; 12 | 13 | public interface TranslatorLibrary { 14 | 15 | /** 16 | * Lookup translator. 17 | * @param key a key 18 | * @return translator 19 | */ 20 | MessageTranslator lookupTranslator(TranslatorKey key); 21 | } 22 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/XidSequencer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.device; 9 | 10 | import org.opendaylight.yangtools.yang.common.Uint32; 11 | 12 | /** 13 | * Reserves unique XID for Device Messages. 14 | */ 15 | public interface XidSequencer { 16 | /** 17 | * Method reserve unique XID for Device Message. 18 | * Attention: OFJava expect the message, otherwise OutboundQueue could stop working. 19 | * 20 | * @return Reserved XID 21 | */ 22 | Uint32 reserveXidForDeviceMessage(); 23 | } 24 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/exception/RequestQuotaExceededException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.device.exception; 10 | 11 | /** 12 | * Request quota exception. 13 | */ 14 | public class RequestQuotaExceededException extends Exception { 15 | private static final long serialVersionUID = 1L; 16 | } 17 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/handlers/DeviceDisconnectedHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.device.handlers; 10 | 11 | import org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext; 12 | 13 | /** 14 | * Represents handler for just disconnected device that will propagate device's 15 | * connection context. It is important for correct order in device disconnection chain. 16 | */ 17 | public interface DeviceDisconnectedHandler { 18 | 19 | /** 20 | * Method is used to propagate information about closed connection with device. 21 | * It propagates connected device's connection context. 22 | */ 23 | void onDeviceDisconnected(ConnectionContext connectionContext); 24 | } -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/handlers/DeviceRemovedHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.device.handlers; 10 | 11 | import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo; 12 | 13 | /** 14 | * Represents handler for device that was disconnected but needs to be removed from it's manager. 15 | */ 16 | public interface DeviceRemovedHandler { 17 | 18 | /** 19 | * Method is used to propagate information about device being removed from manager. 20 | */ 21 | void onDeviceRemoved(DeviceInfo deviceInfo); 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/listener/OpenflowMessageListenerFacade.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.device.listener; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter.MessageListener; 11 | 12 | /** 13 | * Facade for openflow protocol listener. 14 | */ 15 | public interface OpenflowMessageListenerFacade extends MessageListener { 16 | } 17 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/lifecycle/ContextChainMastershipState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.lifecycle; 9 | 10 | public enum ContextChainMastershipState { 11 | /** 12 | * Device has role MASTER set. 13 | */ 14 | MASTER_ON_DEVICE, 15 | /** 16 | * Initial submit ok. 17 | */ 18 | INITIAL_SUBMIT, 19 | /** 20 | * Registration of RPC services is done. 21 | */ 22 | RPC_REGISTRATION, 23 | /** 24 | * Check mastership. 25 | */ 26 | CHECK 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/lifecycle/ContextChainState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.lifecycle; 9 | 10 | public enum ContextChainState { 11 | /** 12 | * Context chain is undefined. 13 | */ 14 | UNDEFINED, 15 | /** 16 | * Context chain is working as MASTER. 17 | */ 18 | WORKING_MASTER, 19 | /** 20 | * Context chain is working as SLAVE, initial gathering already done. 21 | */ 22 | WORKING_SLAVE, 23 | /** 24 | * Context chain is closed. 25 | */ 26 | CLOSED 27 | } -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/lifecycle/ContextChainStateListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.lifecycle; 10 | 11 | /** 12 | * Listens to changes about context chain state. 13 | */ 14 | public interface ContextChainStateListener { 15 | 16 | /** 17 | * Event triggered on context chain state change. 18 | * @param state context chain state 19 | */ 20 | void onStateAcquired(ContextChainState state); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/lifecycle/DeviceInitializationContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.lifecycle; 10 | 11 | public interface DeviceInitializationContext { 12 | 13 | /** 14 | * Initializes device information after master role acquistion. 15 | */ 16 | void initializeDevice(); 17 | } 18 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/lifecycle/MasterChecker.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.lifecycle; 9 | 10 | import java.util.List; 11 | import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo; 12 | 13 | /** 14 | * Internal OFP interface. 15 | */ 16 | public interface MasterChecker { 17 | 18 | /** 19 | * Mastered devices. 20 | * @return list of mastered devices 21 | */ 22 | List listOfMasteredDevices(); 23 | 24 | /** 25 | * Check if any device is mastered by controller. 26 | * @return true if there is at least one device mastered by controller 27 | */ 28 | boolean isAnyDeviceMastered(); 29 | 30 | } -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/lifecycle/ReconciliationFrameworkRegistrar.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.lifecycle; 9 | 10 | import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo; 11 | 12 | public interface ReconciliationFrameworkRegistrar { 13 | /** 14 | * Check if reconciliation framework is registered. 15 | * If not the event {@link OwnershipChangeListener#becomeMasterBeforeSubmittedDS(DeviceInfo)} 16 | * will not be triggered. 17 | * @return true if there exists any reconciliation framework registration 18 | */ 19 | boolean isReconciliationFrameworkRegistered(); 20 | } -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/lifecycle/ReconciliationFrameworkStep.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.lifecycle; 9 | 10 | public interface ReconciliationFrameworkStep { 11 | /** 12 | * Allow to continue after reconciliation framework callback success. 13 | * @since 0.5.0 Nitrogen 14 | * @see org.opendaylight.openflowplugin.api.openflow.mastership.MastershipChangeService 15 | * @see OwnershipChangeListener#isReconciliationFrameworkRegistered() 16 | */ 17 | void continueInitializationAfterReconciliation(); 18 | } -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/mastership/MastershipChangeException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.mastership; 9 | 10 | public class MastershipChangeException extends Exception { 11 | 12 | private static final long serialVersionUID = 998L; 13 | 14 | public MastershipChangeException(String message) { 15 | super(message); 16 | } 17 | 18 | public MastershipChangeException(String message, Throwable cause) { 19 | super(message, cause); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/mastership/MastershipChangeRegistration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.mastership; 9 | 10 | /** 11 | * API provided for all OFP application to use. 12 | * This is registration of service for mastership changes. 13 | * Service provides three events. 14 | *
    15 | *
  • onBecomeOwner 16 | *
  • onLoseOwnership 17 | *
18 | * @see MastershipChangeService 19 | * @since 0.5.0 Nitrogen 20 | */ 21 | @Deprecated(forRemoval = true) 22 | public interface MastershipChangeRegistration extends AutoCloseable { 23 | } 24 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/mastership/ReconciliationFrameworkRegistration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.mastership; 9 | 10 | /** 11 | * API provided for reconciliation framework registration. 12 | * Service provides three events. 13 | *
    14 | *
  • onDevicePrepared 15 | *
  • onDeviceDisconnected 16 | *
17 | * @see ReconciliationFrameworkEvent 18 | * @since 0.5.0 Nitrogen 19 | */ 20 | @Deprecated(forRemoval = true) 21 | public interface ReconciliationFrameworkRegistration extends AutoCloseable { 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/core/ErrorHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.md.core; 9 | 10 | public interface ErrorHandler { 11 | 12 | /** 13 | * Exception handler. 14 | * 15 | * @param throwable cause 16 | */ 17 | void handleException(Throwable throwable); 18 | } 19 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/core/HandshakeManager.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.md.core; 9 | 10 | import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloMessage; 11 | import org.opendaylight.yangtools.yang.common.Uint8; 12 | 13 | public interface HandshakeManager { 14 | /** 15 | * Return negotiated version. 16 | * 17 | * @return negotiated version. 18 | */ 19 | Uint8 getVersion(); 20 | 21 | /** 22 | * Process current handshake step. 23 | * 24 | * @param receivedHello message from device we need to act upon 25 | */ 26 | void shake(HelloMessage receivedHello); 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/protocol/deserialization/MatchEntryDeserializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.protocol.deserialization; 10 | 11 | import io.netty.buffer.ByteBuf; 12 | import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; 13 | 14 | public interface MatchEntryDeserializer { 15 | 16 | /** 17 | * Transforms byte match entry message into POJO/DTO (of type E). 18 | * 19 | * @param message message as bytes in ByteBuf 20 | * @param builder match builder 21 | */ 22 | void deserializeEntry(ByteBuf message, MatchBuilder builder); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/protocol/serialization/MatchEntrySerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.protocol.serialization; 9 | 10 | import io.netty.buffer.ByteBuf; 11 | import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.Match; 12 | 13 | public interface MatchEntrySerializer { 14 | 15 | /** 16 | * Serialize this match entry if it is present in the match. 17 | * 18 | * @param match Openflow match 19 | * @param outBuffer output buffer 20 | */ 21 | void serializeIfPresent(Match match, ByteBuf outBuffer); 22 | } -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/protocol/serialization/MatchEntrySerializerKey.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.protocol.serialization; 10 | 11 | /** 12 | * Marker interface - marks keys appropriate for match entry serializer registration. 13 | */ 14 | public interface MatchEntrySerializerKey { 15 | } 16 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/registry/flow/FlowDescriptor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.registry.flow; 10 | 11 | import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId; 12 | import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey; 13 | 14 | public interface FlowDescriptor { 15 | 16 | FlowId getFlowId(); 17 | 18 | TableKey getTableKey(); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/registry/flow/FlowRegistryException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.registry.flow; 10 | 11 | /** 12 | * Created by Martin Bobak <mbobak@cisco.com> on 8.4.2015. 13 | */ 14 | @Deprecated 15 | public class FlowRegistryException extends Exception { 16 | private static final long serialVersionUID = 7514092745206029217L; 17 | 18 | public FlowRegistryException(final String message) { 19 | super(message); 20 | } 21 | 22 | public FlowRegistryException(final String message, final Throwable cause) { 23 | super(message, cause); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/registry/flow/FlowRegistryKey.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.registry.flow; 9 | 10 | import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match; 11 | import org.opendaylight.yangtools.yang.common.Uint64; 12 | 13 | /** 14 | * Marker interface identifying flow stored in OFP local flow registry. 15 | * Created by Martin Bobak <mbobak@cisco.com> on 8.4.2015. 16 | */ 17 | public interface FlowRegistryKey { 18 | 19 | short getTableId(); 20 | 21 | int getPriority(); 22 | 23 | Uint64 getCookie(); 24 | 25 | Match getMatch(); 26 | } 27 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/registry/meter/DeviceMeterRegistry.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.registry.meter; 10 | 11 | import org.opendaylight.openflowplugin.api.openflow.registry.CommonDeviceRegistry; 12 | import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId; 13 | 14 | public interface DeviceMeterRegistry extends CommonDeviceRegistry { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/role/RoleContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.role; 10 | 11 | import org.opendaylight.openflowplugin.api.openflow.OFPContext; 12 | import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; 13 | import org.opendaylight.yang.gen.v1.urn.opendaylight.role.service.rev150727.SetRole; 14 | 15 | /** 16 | * Handles propagation of SLAVE and MASTER roles on connected devices. 17 | */ 18 | public interface RoleContext extends OFPContext, RequestContextStack { 19 | /** 20 | * Sets role service rpc implementation. 21 | * 22 | * @param setRole the set role rpc 23 | */ 24 | void setRoleRpc(SetRole setRole); 25 | } -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/role/RoleManager.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.role; 10 | 11 | import org.eclipse.jdt.annotation.NonNull; 12 | import org.opendaylight.openflowplugin.api.openflow.OFPManager; 13 | import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; 14 | 15 | /** 16 | * Manages creation and termination of role contexts. 17 | * @see org.opendaylight.openflowplugin.api.openflow.role.RoleContext 18 | */ 19 | public interface RoleManager extends OFPManager { 20 | /** 21 | * Create role context. 22 | * 23 | * @param deviceContext the device context 24 | * @return the role context 25 | */ 26 | RoleContext createContext(@NonNull DeviceContext deviceContext); 27 | } -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/rpc/RpcContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.rpc; 9 | 10 | import org.opendaylight.openflowplugin.api.openflow.OFPContext; 11 | import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack; 12 | 13 | /** 14 | * This context is registered with MD-SAL as a routed RPC provider for the inventory node backed by this switch and 15 | * tracks the state of any user requests and how they map onto protocol requests. It uses 16 | * {@link org.opendaylight.openflowplugin.api.openflow.device.RequestContext} to perform requests. 17 | */ 18 | public interface RpcContext extends RequestContextStack, OFPContext { 19 | // Just a composition interface 20 | } 21 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/rpc/RpcManager.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015, 2017 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.rpc; 10 | 11 | import org.eclipse.jdt.annotation.NonNull; 12 | import org.opendaylight.openflowplugin.api.openflow.OFPManager; 13 | import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; 14 | 15 | /** 16 | * The RPC Manager will maintain an RPC Context for each online switch. 17 | */ 18 | public interface RpcManager extends OFPManager { 19 | 20 | RpcContext createContext(@NonNull DeviceContext deviceContext); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/statistics/MessageCountDumper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.statistics; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * simple message counters dumper. 14 | */ 15 | public interface MessageCountDumper { 16 | 17 | /** 18 | * List of counter items. 19 | * @return list of counter items 20 | */ 21 | List dumpMessageCounts(); 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/statistics/MessageObservatory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.api.openflow.statistics; 9 | 10 | @Deprecated 11 | public interface MessageObservatory extends MessageSpy, MessageCountDumper { 12 | 13 | // just unifying iface 14 | 15 | } 16 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/statistics/StatisticsManager.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.statistics; 10 | 11 | import org.eclipse.jdt.annotation.NonNull; 12 | import org.opendaylight.openflowplugin.api.openflow.OFPManager; 13 | import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; 14 | 15 | /** 16 | * Manages statistics contexts. 17 | */ 18 | public interface StatisticsManager extends OFPManager { 19 | StatisticsContext createContext(@NonNull DeviceContext deviceContext, 20 | boolean useReconciliationFramework); 21 | } -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/statistics/compatibility/Delegator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.statistics.compatibility; 10 | 11 | /** 12 | * Simple delegator pattern support. 13 | */ 14 | public interface Delegator { 15 | 16 | /** 17 | * Setter. 18 | * @param delegate backend task executor 19 | */ 20 | void setDelegate(D delegate); 21 | } 22 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/statistics/ofpspecific/EventIdentifier.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific; 10 | 11 | /** 12 | * Created by Martin Bobak <mbobak@cisco.com> on 29.5.2015. 13 | */ 14 | public final class EventIdentifier { 15 | 16 | private final String eventName; 17 | private final String deviceId; 18 | 19 | public EventIdentifier(final String eventName, final String deviceId) { 20 | this.eventName = eventName; 21 | this.deviceId = deviceId; 22 | } 23 | 24 | public String getEventName() { 25 | return eventName; 26 | } 27 | 28 | public String getDeviceId() { 29 | return deviceId; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/statistics/ofpspecific/MessageIntelligenceAgency.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific; 10 | 11 | import java.util.List; 12 | 13 | public interface MessageIntelligenceAgency extends MessageSpy { 14 | 15 | List provideIntelligence(); 16 | 17 | void resetStatistics(); 18 | } 19 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/statistics/ofpspecific/StatisticsGatherer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific; 10 | 11 | import com.google.common.util.concurrent.ListenableFuture; 12 | import java.util.List; 13 | import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType; 14 | import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader; 15 | import org.opendaylight.yangtools.yang.common.RpcResult; 16 | 17 | public interface StatisticsGatherer { 18 | ListenableFuture>> getStatisticsOfType(EventIdentifier eventIdentifier, MultipartType type); 19 | } 20 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/translator/TranslatorLibrarian.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.api.openflow.translator; 10 | 11 | import org.opendaylight.openflowplugin.api.openflow.device.TranslatorLibrary; 12 | 13 | public interface TranslatorLibrarian { 14 | 15 | /** 16 | * Method provides translator library held by Librarian. 17 | * @return translator library 18 | */ 19 | TranslatorLibrary oook(); 20 | 21 | /** 22 | * Method registers translator library for translating message objects. 23 | * @param translatorLibrary translator library 24 | */ 25 | void setTranslatorLibrary(TranslatorLibrary translatorLibrary); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-api/src/main/yang/recinciliation-result-state.yang: -------------------------------------------------------------------------------- 1 | module reconciliation-result-state { 2 | yang-version 1; 3 | namespace "urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state"; 4 | prefix "rf-state"; 5 | 6 | description 7 | "Reconciliation framework result state enumeration"; 8 | 9 | revision "2017-07-13" { 10 | description 11 | "Initial proposal."; 12 | } 13 | 14 | 15 | typedef result-state { 16 | description "Reconciliation result state."; 17 | type enumeration { 18 | enum DO_NOTHING { 19 | description "Reconciliation wasn't successful but not important."; 20 | } 21 | enum DISCONNECT { 22 | description "Reconciliation wasn't successful but is mandatory, disconnect device."; 23 | } 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/DiagStatusProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl; 9 | 10 | import org.opendaylight.infrautils.diagstatus.ServiceState; 11 | 12 | public interface DiagStatusProvider { 13 | 14 | void reportStatus(ServiceState serviceState); 15 | 16 | void reportStatus(ServiceState serviceState, Throwable throwable); 17 | 18 | void reportStatus(ServiceState serviceState, String description); 19 | } 20 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/history/FlowGroupInfoHistoryAppender.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.device.history; 9 | 10 | import com.google.common.annotations.Beta; 11 | import org.eclipse.jdt.annotation.NonNullByDefault; 12 | import org.opendaylight.openflowplugin.api.openflow.FlowGroupInfo; 13 | 14 | @Beta 15 | @NonNullByDefault 16 | public interface FlowGroupInfoHistoryAppender { 17 | 18 | void appendFlowGroupInfo(FlowGroupInfo info); 19 | } 20 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/match/AbstractUint16EntrySerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.match; 9 | 10 | import io.netty.buffer.ByteBuf; 11 | import org.opendaylight.yangtools.yang.common.Uint16; 12 | 13 | public abstract class AbstractUint16EntrySerializer extends AbstractPrimitiveEntrySerializer { 14 | protected AbstractUint16EntrySerializer(final int oxmClassCode, final int oxmFieldCode) { 15 | super(oxmClassCode, oxmFieldCode, Short.BYTES); 16 | } 17 | 18 | @Override 19 | protected final void serializeEntry(final Uint16 entry, final ByteBuf outBuffer) { 20 | outBuffer.writeShort(entry.shortValue()); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/match/AbstractUint32EntrySerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.match; 9 | 10 | import io.netty.buffer.ByteBuf; 11 | import org.opendaylight.yangtools.yang.common.Uint32; 12 | 13 | public abstract class AbstractUint32EntrySerializer extends AbstractPrimitiveEntrySerializer { 14 | protected AbstractUint32EntrySerializer(final int oxmClassCode, final int oxmFieldCode) { 15 | super(oxmClassCode, oxmFieldCode, Integer.BYTES); 16 | } 17 | 18 | @Override 19 | protected final void serializeEntry(final Uint32 entry, final ByteBuf outBuffer) { 20 | outBuffer.writeInt(entry.intValue()); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/match/AbstractUint8EntrySerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2019 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.match; 9 | 10 | import io.netty.buffer.ByteBuf; 11 | import org.opendaylight.yangtools.yang.common.Uint8; 12 | 13 | public abstract class AbstractUint8EntrySerializer extends AbstractPrimitiveEntrySerializer { 14 | protected AbstractUint8EntrySerializer(final int oxmClassCode, final int oxmFieldCode) { 15 | super(oxmClassCode, oxmFieldCode, Byte.BYTES); 16 | } 17 | 18 | @Override 19 | protected final void serializeEntry(final Uint8 entry, final ByteBuf outBuffer) { 20 | outBuffer.writeByte(entry.byteValue()); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/MultipartRequestDescSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart; 10 | 11 | import io.netty.buffer.ByteBuf; 12 | import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; 13 | import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.request.MultipartRequestBody; 14 | 15 | public class MultipartRequestDescSerializer implements OFSerializer { 16 | 17 | @Override 18 | public void serialize(final MultipartRequestBody multipartRequestBody, final ByteBuf byteBuf) { 19 | // NOOP 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/MultipartRequestFlowTableStatsSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart; 10 | 11 | import io.netty.buffer.ByteBuf; 12 | import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; 13 | import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.request.MultipartRequestBody; 14 | 15 | public class MultipartRequestFlowTableStatsSerializer implements OFSerializer { 16 | 17 | @Override 18 | public void serialize(final MultipartRequestBody multipartRequestBody, final ByteBuf byteBuf) { 19 | // NOOP 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/MultipartRequestGroupDescSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart; 10 | 11 | import io.netty.buffer.ByteBuf; 12 | import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; 13 | import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.request.MultipartRequestBody; 14 | 15 | public class MultipartRequestGroupDescSerializer implements OFSerializer { 16 | 17 | @Override 18 | public void serialize(final MultipartRequestBody multipartRequestBody, final ByteBuf byteBuf) { 19 | // NOOP 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/MultipartRequestGroupFeaturesSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart; 10 | 11 | import io.netty.buffer.ByteBuf; 12 | import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; 13 | import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.request.MultipartRequestBody; 14 | 15 | public class MultipartRequestGroupFeaturesSerializer implements OFSerializer { 16 | 17 | @Override 18 | public void serialize(final MultipartRequestBody multipartRequestBody, final ByteBuf byteBuf) { 19 | // NOOP 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/MultipartRequestMeterFeaturesSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart; 10 | 11 | import io.netty.buffer.ByteBuf; 12 | import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; 13 | import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.request.MultipartRequestBody; 14 | 15 | public class MultipartRequestMeterFeaturesSerializer implements OFSerializer { 16 | 17 | @Override 18 | public void serialize(final MultipartRequestBody multipartRequestBody, final ByteBuf byteBuf) { 19 | // NOOP 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/MultipartRequestPortDescSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart; 10 | 11 | import io.netty.buffer.ByteBuf; 12 | import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer; 13 | import org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.request.MultipartRequestBody; 14 | 15 | public class MultipartRequestPortDescSerializer implements OFSerializer { 16 | 17 | @Override 18 | public void serialize(final MultipartRequestBody multipartRequestBody, final ByteBuf byteBuf) { 19 | // NOOP 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/ArpOpMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class ArpOpMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.ARP_OP; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Short.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/ArpSpaMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class ArpSpaMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.ARP_SPA; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Integer.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/ArpTpaMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class ArpTpaMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.ARP_TPA; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Integer.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/EthTypeMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class EthTypeMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.ETH_TYPE; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Short.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/Icmpv4CodeMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class Icmpv4CodeMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.ICMPV4_CODE; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Byte.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/Icmpv4TypeMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class Icmpv4TypeMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.ICMPV4_TYPE; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Byte.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/Icmpv6CodeMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class Icmpv6CodeMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.ICMPV6_CODE; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Byte.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/Icmpv6TypeMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class Icmpv6TypeMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.ICMPV6_TYPE; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Byte.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/InPhyPortMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class InPhyPortMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.IN_PHY_PORT; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Integer.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/InPortMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class InPortMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.IN_PORT; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Integer.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/IpDscpMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class IpDscpMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.IP_DSCP; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Byte.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/IpEcnMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class IpEcnMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.IP_ECN; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Byte.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/IpProtoMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class IpProtoMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.IP_PROTO; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Byte.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/Ipv4DstMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class Ipv4DstMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.IPV4_DST; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Integer.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/Ipv4SrcMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class Ipv4SrcMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.IPV4_SRC; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Integer.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/Ipv6ExtHdrMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class Ipv6ExtHdrMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.IPV6_EXTHDR; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Short.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/MetadataMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class MetadataMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.METADATA; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Long.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/MplsBosMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class MplsBosMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.MPLS_BOS; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Byte.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/MplsTcMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class MplsTcMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.MPLS_TC; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Byte.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/SctpDstMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class SctpDstMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.SCTP_DST; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Short.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/SctpSrcMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class SctpSrcMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.SCTP_SRC; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Short.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/TcpDstMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class TcpDstMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.TCP_DST; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Short.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/TcpSrcMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class TcpSrcMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.TCP_SRC; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Short.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/TunnelIdMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class TunnelIdMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.TUNNEL_ID; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Long.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/UdpDstMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class UdpDstMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.UDP_DST; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Short.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/UdpSrcMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class UdpSrcMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.UDP_SRC; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Short.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/VlanPcpMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class VlanPcpMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.VLAN_PCP; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Byte.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/protocol/serialization/multipart/tablefeatures/matchfield/VlanVidMatchFieldSerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.protocol.serialization.multipart.tablefeatures.matchfield; 9 | 10 | import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants; 11 | 12 | public class VlanVidMatchFieldSerializer extends AbstractMatchFieldSerializer { 13 | @Override 14 | protected int getOxmClassCode() { 15 | return OxmMatchConstants.OPENFLOW_BASIC_CLASS; 16 | } 17 | 18 | @Override 19 | protected int getOxmFieldCode() { 20 | return OxmMatchConstants.VLAN_VID; 21 | } 22 | 23 | @Override 24 | protected int getValueLength() { 25 | return Short.BYTES; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/role/RoleChangeException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.role; 9 | 10 | public class RoleChangeException extends Exception { 11 | private static final long serialVersionUID = -615991366447313972L; 12 | 13 | /** 14 | * Default constructor. 15 | * 16 | * @param message - message 17 | */ 18 | public RoleChangeException(String message) { 19 | super(message); 20 | } 21 | 22 | /** 23 | * Constructor. 24 | * 25 | * @param message - message 26 | * @param cause - cause 27 | */ 28 | public RoleChangeException(String message, Throwable cause) { 29 | super(message, cause); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/batch/BatchStepType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.impl.services.batch; 10 | 11 | /** 12 | * Batch step types - holding combinations of target object type and action type. 13 | */ 14 | public enum BatchStepType { 15 | 16 | /** Flow add operation. */FLOW_ADD, 17 | /** Flow remove operation. */FLOW_REMOVE, 18 | /** Flow update operation. */FLOW_UPDATE, 19 | 20 | /** Group add operation. */GROUP_ADD, 21 | /** Group remove operation. */GROUP_REMOVE, 22 | /** Group update operation. */GROUP_UPDATE, 23 | 24 | /** Meter add operation. */METER_ADD, 25 | /** Meter remove operation. */METER_REMOVE, 26 | /** Meter update operation. */METER_UPDATE 27 | } 28 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/sal/AbstractDeviceRpc.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 PANTHEON.tech, s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.services.sal; 9 | 10 | import static java.util.Objects.requireNonNull; 11 | 12 | import org.eclipse.jdt.annotation.NonNull; 13 | import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; 14 | 15 | abstract class AbstractDeviceRpc { 16 | final @NonNull DeviceContext deviceContext; 17 | 18 | AbstractDeviceRpc(final DeviceContext deviceContext) { 19 | this.deviceContext = requireNonNull(deviceContext); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/services/util/ServiceException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.services.util; 9 | 10 | /** 11 | * Exception thrown by {@link org.opendaylight.openflowplugin.impl.services.AbstractService#buildRequest( 12 | * org.opendaylight.openflowplugin.api.openflow.device.Xid, Object)}. 13 | */ 14 | public class ServiceException extends Exception { 15 | private static final long serialVersionUID = -1808885680674101608L; 16 | 17 | public ServiceException(final Throwable cause) { 18 | super(cause); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/ofpspecific/MessageIntelligenceAgencyMXBean.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.impl.statistics.ofpspecific; 9 | 10 | import java.util.List; 11 | import javax.management.MXBean; 12 | 13 | /** 14 | * Created by Martin Bobak <mbobak@cisco.com> on 11.5.2015. 15 | */ 16 | @MXBean 17 | public interface MessageIntelligenceAgencyMXBean { 18 | 19 | List provideIntelligence(); 20 | } 21 | -------------------------------------------------------------------------------- /openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ConvertorRegistrator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor; 9 | 10 | import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor; 11 | import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorData; 12 | import org.opendaylight.yangtools.yang.common.Uint8; 13 | 14 | public interface ConvertorRegistrator { 15 | /** 16 | * Register convertor. 17 | * 18 | * @param convertor the convertor 19 | */ 20 | ConvertorManager registerConvertor(Uint8 version, Convertor convertor); 21 | } 22 | -------------------------------------------------------------------------------- /openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/OFApprovedExperimenterIds.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Brocade Communications Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor; 9 | 10 | import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ExperimenterId; 11 | import org.opendaylight.yangtools.yang.common.Uint32; 12 | 13 | /** 14 | * Created by Anil Vishnoi (avishnoi@Brocade.com) on 8/2/16. 15 | */ 16 | public final class OFApprovedExperimenterIds { 17 | public static final ExperimenterId MATCH_TCP_FLAGS_EXP_ID = new ExperimenterId(Uint32.valueOf(1330529792)); 18 | 19 | private OFApprovedExperimenterIds() { 20 | // Hidden on purpose 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ConvertReactorConvertor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common; 10 | 11 | import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorExecutor; 12 | 13 | /** 14 | * Converts OpenflowJava to MDSal model and vice versa. 15 | * 16 | * @param type of source 17 | * @param type of result 18 | */ 19 | public interface ConvertReactorConvertor { 20 | 21 | /** 22 | * Converts source to result. 23 | * 24 | * @param source source 25 | * @param convertorExecutor the convertor executor 26 | * @return converted source 27 | */ 28 | TO convert(FROM source, ConvertorExecutor convertorExecutor); 29 | } 30 | -------------------------------------------------------------------------------- /openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/ResultInjector.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common; 9 | 10 | /** 11 | * Injecting match object into chosen target. 12 | * 13 | * @param result to inject (e.g.: OF-API match) 14 | * @param target of injection 15 | */ 16 | public interface ResultInjector { 17 | 18 | /** 19 | * Inject result into target. 20 | * 21 | * @param result result 22 | * @param target target 23 | */ 24 | void inject(R result, T target); 25 | } 26 | -------------------------------------------------------------------------------- /openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/data/VersionConvertorData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data; 9 | 10 | import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertorData; 11 | import org.opendaylight.yangtools.yang.common.Uint8; 12 | 13 | /** 14 | * Convertor data implementation containing only Openflow version. 15 | */ 16 | public class VersionConvertorData extends ConvertorData { 17 | /** 18 | * Instantiates a new Version convertor data. 19 | * 20 | * @param version the version 21 | */ 22 | public VersionConvertorData(final Uint8 version) { 23 | super(version); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /openflowplugin/src/test/resources/log4j.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /samples/learning-switch/src/main/java/org/opendaylight/openflowplugin/learningswitch/DataTreeChangeListenerRegistrationHolder.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.learningswitch; 9 | 10 | import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; 11 | import org.opendaylight.yangtools.concepts.Registration; 12 | 13 | /** 14 | * Holder for {@link DataTreeChangeListener} registration. 15 | */ 16 | public interface DataTreeChangeListenerRegistrationHolder { 17 | /** 18 | * Returns the DataTreeChangeListenerRegistration. 19 | */ 20 | Registration getDataTreeChangeListenerRegistration(); 21 | } 22 | -------------------------------------------------------------------------------- /samples/learning-switch/src/main/java/org/opendaylight/openflowplugin/learningswitch/FlowCommitWrapper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.learningswitch; 9 | 10 | import com.google.common.util.concurrent.ListenableFuture; 11 | import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow; 12 | import org.opendaylight.yangtools.binding.DataObjectIdentifier; 13 | 14 | public interface FlowCommitWrapper { 15 | /** 16 | * Starts and commits data change transaction which modifies provided flow path with supplied body. 17 | * 18 | * @param flowPath the flow path 19 | * @param flowBody the flow body 20 | * @return transaction commit 21 | */ 22 | ListenableFuture writeFlowToConfig(DataObjectIdentifier flowPath, Flow flowBody); 23 | } 24 | -------------------------------------------------------------------------------- /samples/learning-switch/src/main/java/org/opendaylight/openflowplugin/learningswitch/LearningSwitchHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.learningswitch; 9 | 10 | import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table; 11 | import org.opendaylight.yangtools.binding.DataObjectIdentifier; 12 | 13 | public interface LearningSwitchHandler { 14 | /** 15 | * Invoked when a switch appears. 16 | * 17 | * @param tablePath the table path 18 | */ 19 | void onSwitchAppeared(DataObjectIdentifier tablePath); 20 | } 21 | -------------------------------------------------------------------------------- /samples/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 4.0.0 5 | 6 | org.opendaylight.odlparent 7 | odlparent-lite 8 | 14.1.3 9 | 10 | 11 | 12 | org.opendaylight.openflowplugin 13 | openflowplugin-samples-aggregator 14 | 0.20.2-SNAPSHOT 15 | pom 16 | 17 | 18 | true 19 | true 20 | 21 | 22 | 23 | learning-switch 24 | sample-consumer 25 | sample-bundles 26 | simple-client 27 | 28 | 29 | -------------------------------------------------------------------------------- /samples/simple-client/src/main/java/org/opendaylight/openflowjava/protocol/impl/clients/ClientEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | 9 | package org.opendaylight.openflowjava.protocol.impl.clients; 10 | 11 | /** 12 | * Uniting interface used for scenario support. 13 | * 14 | * @author michal.polkorab 15 | */ 16 | public interface ClientEvent { 17 | 18 | /** 19 | * Common method for triggering events. 20 | * 21 | * @return true if event executed successfully 22 | */ 23 | boolean eventExecuted(); 24 | } 25 | -------------------------------------------------------------------------------- /samples/simple-client/src/main/resources/selfSignedController: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/samples/simple-client/src/main/resources/selfSignedController -------------------------------------------------------------------------------- /samples/simple-client/src/main/resources/selfSignedSwitch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/samples/simple-client/src/main/resources/selfSignedSwitch -------------------------------------------------------------------------------- /srm/api/src/main/java/org/opendaylight/serviceutils/srm/RecoverableListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.serviceutils.srm; 9 | 10 | public interface RecoverableListener { 11 | /** 12 | * register a recoverable listener. 13 | */ 14 | void registerListener(); 15 | 16 | /** 17 | * Deregister a recoverable listener. 18 | */ 19 | void deregisterListener(); 20 | } -------------------------------------------------------------------------------- /srm/api/src/main/java/org/opendaylight/serviceutils/srm/ServiceRecoveryInterface.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.serviceutils.srm; 9 | 10 | public interface ServiceRecoveryInterface { 11 | /** 12 | * Initiates recovery mechanism for a particular interface-manager entity. 13 | * 14 | * @param entityId 15 | * The unique identifier for the service instance. 16 | */ 17 | void recoverService(String entityId); 18 | } -------------------------------------------------------------------------------- /srm/api/src/main/java/org/opendaylight/serviceutils/srm/ServiceRecoveryRegistry.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.serviceutils.srm; 9 | 10 | import java.util.Queue; 11 | 12 | public interface ServiceRecoveryRegistry { 13 | 14 | void registerServiceRecoveryRegistry(String entityName, 15 | ServiceRecoveryInterface serviceRecoveryHandler); 16 | 17 | void addRecoverableListener(String serviceName, RecoverableListener recoverableListener); 18 | 19 | void removeRecoverableListener(String serviceName, RecoverableListener recoverableListener); 20 | 21 | Queue getRecoverableListeners(String serviceName); 22 | 23 | ServiceRecoveryInterface getRegisteredServiceRecoveryHandler(String entityName); 24 | } -------------------------------------------------------------------------------- /test-common/src/main/java/org/opendaylight/openflowplugin/testcommon/DropTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 PANTHEON.tech, s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.testcommon; 9 | 10 | public interface DropTest { 11 | 12 | DropTestStats getStats(); 13 | 14 | void clearStats(); 15 | 16 | boolean start(); 17 | 18 | boolean stop(); 19 | } 20 | -------------------------------------------------------------------------------- /test-common/src/main/java/org/opendaylight/openflowplugin/testcommon/DropTestCommiter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 PANTHEON.tech, s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.testcommon; 9 | 10 | public interface DropTestCommiter extends DropTest { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /test-common/src/main/java/org/opendaylight/openflowplugin/testcommon/DropTestRpcSender.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 PANTHEON.tech, s.r.o. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.testcommon; 9 | 10 | public interface DropTestRpcSender extends DropTest { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /test-provider/src/main/java/org/opendaylight/openflowplugin/test/OpenflowpluginTestActivator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. 3 | * 4 | * This program and the accompanying materials are made available under the 5 | * terms of the Eclipse Public License v1.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v10.html 7 | */ 8 | package org.opendaylight.openflowplugin.test; 9 | 10 | final class OpenflowpluginTestActivator { 11 | static final String NODE_ID = "foo:node:1"; 12 | 13 | private OpenflowpluginTestActivator() { 14 | // Hidden on purpose 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /test-scripts/README: -------------------------------------------------------------------------------- 1 | Wiki documentation 2 | ================== 3 | 4 | https://wiki.opendaylight.org/view/OpenDaylight_OpenFlow_Plugin::Python_test_scripts 5 | 6 | 7 | How to Run 8 | ========== 9 | 10 | note: 11 | all script have help which describe all parameters 12 | 13 | 1. > python odl_crud_tests.py --odlhost 172.16.4.212 --fxmls 1,2 14 | This runs tests f1 and f2 against ODL running on the specified IP. 15 | 16 | To run with all XMLs, omit the '--xmls' option. 17 | 18 | For more options, type 'sudo python odl_crud_tests.py --help' 19 | 20 | 3. > src has to be in PYTHONPATH so you are able to run sudo PYTHONPATH=src stress_test python2.6 stress_test.py 21 | -------------------------------------------------------------------------------- /test-scripts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/test-scripts/__init__.py -------------------------------------------------------------------------------- /test-scripts/action-keywords.csv: -------------------------------------------------------------------------------- 1 | dec-nw-ttl;dec_ttl 2 | dec-mpls-ttl;dec_mpls_ttl 3 | drop-action;drop 4 | -------------------------------------------------------------------------------- /test-scripts/crud/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/test-scripts/crud/__init__.py -------------------------------------------------------------------------------- /test-scripts/exceptions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/test-scripts/exceptions/__init__.py -------------------------------------------------------------------------------- /test-scripts/exceptions/odl_exceptions.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Created on Jan 24, 2014 3 | 4 | @author: vdemcak 5 | ''' 6 | 7 | class OdlValidationException(Exception): 8 | def __init__(self, *in_args): 9 | # *in_args is used to get a list of the parameters passed in 10 | self.args = [a for a in in_args] -------------------------------------------------------------------------------- /test-scripts/ignore-keywords.csv: -------------------------------------------------------------------------------- 1 | n_packets;n_packets 2 | n_bytes;n_bytes 3 | arp;arp 4 | duration;duration 5 | barrier;barrier 6 | strict;strict 7 | flow-name;flow-name 8 | flags;flags 9 | id;id 10 | cookie_mask;cookie_mask 11 | dl_type;dl_type 12 | ip;ip 13 | installHw;installHw 14 | -------------------------------------------------------------------------------- /test-scripts/keywords.csv: -------------------------------------------------------------------------------- 1 | cookie;cookie 2 | duration;duration 3 | exit;exit 4 | idle-timeout;idle_timeout 5 | in_port;in_port 6 | instructions;instructions 7 | hard-timeout;hard_timeout 8 | out_port;out_port 9 | match;matches 10 | n_packets;n_packets 11 | n_bytes;n_bytes 12 | priority;priority 13 | reg;reg 14 | table;table 15 | table_id;table 16 | meter-id;meter 17 | group-id;group 18 | -------------------------------------------------------------------------------- /test-scripts/match-keywords.csv: -------------------------------------------------------------------------------- 1 | arp-op;arp_op 2 | arp-source-transport-address;arp_spa 3 | arp-target-transport-address;arp_tpa 4 | arp-source-hardware-address;arp_sha 5 | arp-target-hardware-address;arp_tha 6 | ethernet-source;dl_src 7 | ethernet-destination;dl_dst 8 | ethernet-type;dl_type 9 | icmpv4-type;icmp_type 10 | icmpv4-code;icmp_code 11 | icmpv6-type;icmp_type 12 | icmpv6-code;icmp_code 13 | in-port;in_port 14 | in-phy-port;in_phy_port 15 | ip-dscp;nw_tos 16 | ip-ecn;nw_ecn 17 | ip-protocol;nw_proto 18 | ipv4-source;nw_src 19 | ipv4-destination;nw_dst 20 | ipv6-source;ipv6_src 21 | ipv6-destination;ipv6_dst 22 | ipv6-flabel;ipv6_label 23 | metadata;metadata 24 | mpls-label;mpls_label 25 | mpls-bos;mpls_bos 26 | mpls-tc;mpls_tc 27 | sctp-destination-port;tp_dst 28 | sctp-source-port;tp_src 29 | tcp-destination-port;tp_dst 30 | tcp-source-port;tp_src 31 | tunnel-id;tun_id 32 | udp-destination-port;tp_dst 33 | udp-source-port;tp_src 34 | vlan-id;dl_vlan 35 | vlan-pcp;dl_vlan_pcp 36 | -------------------------------------------------------------------------------- /test-scripts/openvswitch/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/test-scripts/openvswitch/__init__.py -------------------------------------------------------------------------------- /test-scripts/openvswitch/convertor_tools.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Created on Jan 24, 2014 3 | 4 | @author: vdemcak 5 | ''' 6 | 7 | 8 | class ConvertorTools(): 9 | """ 10 | Tool class contains static conversion method 11 | for the value conversions 12 | """ 13 | CONVERTORS = { 14 | 'cookie': hex, 15 | 'metadata': hex 16 | } 17 | 18 | @staticmethod 19 | def base_tag_values_conversion(key, value): 20 | """ 21 | Check a need to conversion and convert if need 22 | """ 23 | if value is None : return '' 24 | else: 25 | convertor = ConvertorTools.CONVERTORS.get(key, None) 26 | if convertor is None : return value 27 | else : 28 | return convertor(int(value)) -------------------------------------------------------------------------------- /test-scripts/openvswitch/testclass_templates.py: -------------------------------------------------------------------------------- 1 | class TestClassAdd(): 2 | def inc_flow(self, flow_id, cookie_id): 3 | raise NotImplementedError("inc_flow is not implemented") 4 | 5 | def inc_error(self): 6 | raise NotImplementedError("inc_error is not implemented") 7 | 8 | class TestClassRemove(): 9 | def delete_flow_from_map(self, flow_id, cookie_id): 10 | raise NotImplementedError("inc_flow is not implemented") 11 | 12 | -------------------------------------------------------------------------------- /test-scripts/tools/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendaylight/openflowplugin/7bf6a209336bc6212552b8012571d471b0f5b9cb/test-scripts/tools/__init__.py -------------------------------------------------------------------------------- /test-scripts/tox.ini: -------------------------------------------------------------------------------- 1 | [tox] 2 | envlist = pep8 3 | skipsdist = true 4 | 5 | [testenv:pep8] 6 | deps = flake8 7 | commands = flake8 8 | 9 | [flake8] 10 | max-line-length = 120 11 | 12 | 13 | -------------------------------------------------------------------------------- /test-scripts/xmls/f19.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | FooXf19 5 | 142 6 | 255 7 | 19 8 | 2 9 | 1 10 | 1200 11 | 3400 12 | false 13 | 14 | 15 | 0 16 | 17 | 18 | 0 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 12345 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /test-scripts/xmls/f20.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | FooXf20 5 | 143 6 | 255 7 | 20 8 | 2 9 | 2 10 | 1200 11 | 3400 12 | false 13 | 14 | 15 | 0 16 | 17 | 18 | 0 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 12345 27 | 1234578 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /test-scripts/xmls/f24.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | FooXf24 5 | 147 6 | 255 7 | 24 8 | 2 9 | 2 10 | 1200 11 | 3400 12 | false 13 | 14 | 15 | 0 16 | 17 | 18 | 0 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 2591 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /test-scripts/xmls/f48.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | 5 | 6 | 0 7 | 8 | 2 9 | 10 | 11 | 12 | 2 13 | 171 14 | 10 15 | 10 16 | false 17 | 2 18 | 19 | 20 | 0xf7d120c 21 | 10668 22 | 23 | 24 | 12 25 | FlowModFlags [_cHECKOVERLAP=false, _rESETCOUNTS=false, _nOPKTCOUNTS=false, _nOBYTCOUNTS=false, _sENDFLOWREM=false] 26 | 10 27 | 34 28 | FooXf48 29 | 2 30 | false 31 | 32 | -------------------------------------------------------------------------------- /test-scripts/xmls/g3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | group-indirect 4 | 5 | 6 | 7 | 8 | 0 9 | 10 | 12 11 | 14 12 | 1234 13 | 14 | 15 | false 16 | Foo 17 | 130 18 | 19 | -------------------------------------------------------------------------------- /test-scripts/xmls/m1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | abcd 4 | meter-burst 5 | 6 | 7 | 444 8 | 0 9 | 234 10 | 5 11 | 12 12 | 1 13 | 14 | ofpmbt-dscp-remark 15 | 16 | 17 | 18 | 14 19 | Foo 20 | 21 | -------------------------------------------------------------------------------- /test-scripts/xmls/m2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | abcd 4 | meter-burst 5 | 6 | 7 | 444 8 | 0 9 | 234 10 | 5 11 | 12 12 | 1 13 | 14 | ofpmbt-dscp-remark 15 | 16 | 17 | 18 | 14 19 | Foo 20 | 21 | -------------------------------------------------------------------------------- /test-scripts/xmls/m3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | abcd 4 | meter-burst 5 | 6 | 7 | 444 8 | 0 9 | 234 10 | 5 11 | 12 12 | 1 13 | 14 | ofpmbt-dscp-remark 15 | 16 | 17 | 18 | 14 19 | Foo 20 | 21 | -------------------------------------------------------------------------------- /tox.ini: -------------------------------------------------------------------------------- 1 | [tox] 2 | minversion = 1.6.0 3 | envlist = docs 4 | skipsdist = true 5 | 6 | [testenv:docs] 7 | deps = -rdocs/requirements.txt 8 | commands = sphinx-build -W -n -b html -d {envtmpdir}/doctrees ./docs/ {envtmpdir}/html 9 | -------------------------------------------------------------------------------- /vagrant/mininet-2.1.0-of-1.3/.vagrant/machines/default/virtualbox/action_provision: -------------------------------------------------------------------------------- 1 | 1386330537 -------------------------------------------------------------------------------- /vagrant/mininet-2.1.0-of-1.3/.vagrant/machines/default/virtualbox/action_set_name: -------------------------------------------------------------------------------- 1 | 1386330537 -------------------------------------------------------------------------------- /vagrant/mininet-2.1.0-of-1.3/.vagrant/machines/default/virtualbox/id: -------------------------------------------------------------------------------- 1 | 8e549062-d345-4312-9ddd-20c6cbea79d4 -------------------------------------------------------------------------------- /vagrant/mininet-2.1.0-of-1.3/bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | #apt-get update 4 | apt-get install -y mininet 5 | cd /;patch -p0 < /vagrant/node.py.patch;cd - 6 | 7 | --------------------------------------------------------------------------------