Class DhcpExternalTunnelManager
- java.lang.Object
-
- org.opendaylight.netvirt.dhcpservice.DhcpExternalTunnelManager
-
- All Implemented Interfaces:
IDhcpExternalTunnelManager
@Singleton public class DhcpExternalTunnelManager extends java.lang.Object implements IDhcpExternalTunnelManager
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringUNKNOWN_DMAC
-
Constructor Summary
Constructors Constructor Description DhcpExternalTunnelManager(org.opendaylight.controller.md.sal.binding.api.DataBroker broker, org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalUtil, org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService itmRpcService, org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService entityOwnershipService, org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager interfaceManager, org.opendaylight.infrautils.jobcoordinator.JobCoordinator jobCoordinator, L2GatewayCache l2GatewayCache, IElanService ielanService, DhcpServiceCounters dhcpServiceCounters)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddOrRemoveDhcpArpFlowforElan(java.lang.String elanInstanceName, boolean addFlow, java.lang.String dhcpIpAddress, java.lang.String dhcpMacAddress)voidconfigureDhcpArpRequestResponseFlow(org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.lang.String elanInstanceName, boolean addFlow, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String dhcpIpAddress, java.lang.String dhcpMacAddress)@Nullable org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacscreateRemoteMcastMac(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node dstDevice, java.lang.String logicalSwitchName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress internalTunnelIp)org.opendaylight.yangtools.yang.common.Uint64designateDpnId(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName, java.util.List<org.opendaylight.yangtools.yang.common.Uint64> dpns)java.util.concurrent.ConcurrentMap<org.apache.commons.lang3.tuple.Pair<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress,java.lang.String>,java.util.Set<java.lang.String>>getAvailableVMCache()java.util.concurrent.ConcurrentMap<org.opendaylight.yangtools.yang.common.Uint64,java.util.Set<org.apache.commons.lang3.tuple.Pair<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress,java.lang.String>>>getDesignatedDpnsToTunnelIpElanNameCache()java.lang.StringgetExternalTunnelInterfaceName(java.lang.String sourceNode, java.lang.String dstNode)static com.google.common.base.Optional<org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node>getNode(org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker, java.lang.String physicalSwitchNodeId)java.util.Optional<SubnetToDhcpPort>getSubnetDhcpPortData(java.lang.String elanInstanceName)@Nullable org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressgetTunnelIpBasedOnElan(java.lang.String elanInstanceName, java.lang.String vmMacAddress)java.util.concurrent.ConcurrentMap<org.apache.commons.lang3.tuple.Pair<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress,java.lang.String>,java.util.Set<java.lang.String>>getTunnelIpElanNameToVmMacCache()java.util.concurrent.ConcurrentMap<org.apache.commons.lang3.tuple.Pair<org.opendaylight.yangtools.yang.common.Uint64,java.lang.String>,org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port>getVniMacAddressToPortCache()voidhandleDesignatedDpnDown(org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.util.List<org.opendaylight.yangtools.yang.common.Uint64> listOfDpns)java.util.List<com.google.common.util.concurrent.ListenableFuture<java.lang.Void>>handleTunnelStateDown(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, org.opendaylight.yangtools.yang.common.Uint64 interfaceDpn)java.util.List<com.google.common.util.concurrent.ListenableFuture<java.lang.Void>>handleTunnelStateUp(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, org.opendaylight.yangtools.yang.common.Uint64 interfaceDpn)voidinit()voidinstallDhcpDropActionOnDpn(org.opendaylight.yangtools.yang.common.Uint64 dpId)voidinstallDhcpFlowsForVms(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName, java.util.List<org.opendaylight.yangtools.yang.common.Uint64> dpns, org.opendaylight.yangtools.yang.common.Uint64 designatedDpnId, java.lang.String vmMacAddress)voidinstallDhcpFlowsForVms(org.opendaylight.yangtools.yang.common.Uint64 designatedDpnId, java.util.Set<java.lang.String> listVmMacAddress, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> tx)voidinstallRemoteMcastMac(org.opendaylight.yangtools.yang.common.Uint64 designatedDpnId, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName)@NonNull org.opendaylight.yangtools.yang.common.Uint64readDesignatedSwitchesForExternalTunnel(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName)@Nullable org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.PortreadVniMacToPortCache(org.opendaylight.yangtools.yang.common.Uint64 vni, java.lang.String macAddress)voidremoveDesignatedSwitchForExternalTunnel(org.opendaylight.yangtools.yang.common.Uint64 dpnId, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName)voidremoveFromAvailableCache(org.apache.commons.lang3.tuple.Pair<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress,java.lang.String> tunnelIpElanName)voidremoveFromLocalCache(org.opendaylight.yangtools.yang.common.Uint64 designatedDpnId, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName)voidremoveVniMacToPortCache(org.opendaylight.yangtools.yang.common.Uint64 vni, java.lang.String macAddress)voidunInstallDhcpEntries(org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.lang.String vmMacAddress, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> tx)voidunInstallDhcpFlowsForVms(java.lang.String elanInstanceName, java.util.List<org.opendaylight.yangtools.yang.common.Uint64> dpns, java.lang.String vmMacAddress)voidunInstallDhcpFlowsForVms(java.lang.String elanInstanceName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.util.List<org.opendaylight.yangtools.yang.common.Uint64> dpns)voidupdateCacheAndInstallNewFlows(java.util.List<org.opendaylight.yangtools.yang.common.Uint64> listOfDpns, org.apache.commons.lang3.tuple.Pair<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress,java.lang.String> pair, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> tx)voidupdateExistingVMTunnelIPCache(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName, java.lang.String vmMacAddress)voidupdateLocalCache(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName, java.lang.String vmMacAddress)voidupdateLocalCache(org.opendaylight.yangtools.yang.common.Uint64 designatedDpnId, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName)voidupdateVniMacToPortCache(org.opendaylight.yangtools.yang.common.Uint64 vni, java.lang.String macAddress, org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port port)voidwriteDesignatedSwitchForExternalTunnel(org.opendaylight.yangtools.yang.common.Uint64 dpnId, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName)
-
-
-
Field Detail
-
UNKNOWN_DMAC
public static final java.lang.String UNKNOWN_DMAC
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
DhcpExternalTunnelManager
@Inject public DhcpExternalTunnelManager(org.opendaylight.controller.md.sal.binding.api.DataBroker broker, org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalUtil, org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService itmRpcService, org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService entityOwnershipService, org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager interfaceManager, org.opendaylight.infrautils.jobcoordinator.JobCoordinator jobCoordinator, L2GatewayCache l2GatewayCache, @Named("elanService") IElanService ielanService, DhcpServiceCounters dhcpServiceCounters)
-
-
Method Detail
-
getDesignatedDpnsToTunnelIpElanNameCache
public java.util.concurrent.ConcurrentMap<org.opendaylight.yangtools.yang.common.Uint64,java.util.Set<org.apache.commons.lang3.tuple.Pair<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress,java.lang.String>>> getDesignatedDpnsToTunnelIpElanNameCache()
- Specified by:
getDesignatedDpnsToTunnelIpElanNameCachein interfaceIDhcpExternalTunnelManager
-
getTunnelIpElanNameToVmMacCache
public java.util.concurrent.ConcurrentMap<org.apache.commons.lang3.tuple.Pair<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress,java.lang.String>,java.util.Set<java.lang.String>> getTunnelIpElanNameToVmMacCache()
- Specified by:
getTunnelIpElanNameToVmMacCachein interfaceIDhcpExternalTunnelManager
-
getAvailableVMCache
public java.util.concurrent.ConcurrentMap<org.apache.commons.lang3.tuple.Pair<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress,java.lang.String>,java.util.Set<java.lang.String>> getAvailableVMCache()
- Specified by:
getAvailableVMCachein interfaceIDhcpExternalTunnelManager
-
getVniMacAddressToPortCache
public java.util.concurrent.ConcurrentMap<org.apache.commons.lang3.tuple.Pair<org.opendaylight.yangtools.yang.common.Uint64,java.lang.String>,org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port> getVniMacAddressToPortCache()
- Specified by:
getVniMacAddressToPortCachein interfaceIDhcpExternalTunnelManager
-
init
@PostConstruct public void init()
-
designateDpnId
public org.opendaylight.yangtools.yang.common.Uint64 designateDpnId(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName, java.util.List<org.opendaylight.yangtools.yang.common.Uint64> dpns)
-
installDhcpFlowsForVms
public void installDhcpFlowsForVms(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName, java.util.List<org.opendaylight.yangtools.yang.common.Uint64> dpns, org.opendaylight.yangtools.yang.common.Uint64 designatedDpnId, java.lang.String vmMacAddress)
-
installDhcpFlowsForVms
public void installDhcpFlowsForVms(org.opendaylight.yangtools.yang.common.Uint64 designatedDpnId, java.util.Set<java.lang.String> listVmMacAddress, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> tx) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException- Throws:
java.util.concurrent.ExecutionExceptionjava.lang.InterruptedException
-
unInstallDhcpFlowsForVms
public void unInstallDhcpFlowsForVms(java.lang.String elanInstanceName, java.util.List<org.opendaylight.yangtools.yang.common.Uint64> dpns, java.lang.String vmMacAddress)
-
unInstallDhcpFlowsForVms
public void unInstallDhcpFlowsForVms(java.lang.String elanInstanceName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.util.List<org.opendaylight.yangtools.yang.common.Uint64> dpns)
-
readDesignatedSwitchesForExternalTunnel
public @NonNull org.opendaylight.yangtools.yang.common.Uint64 readDesignatedSwitchesForExternalTunnel(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName)
-
writeDesignatedSwitchForExternalTunnel
public void writeDesignatedSwitchForExternalTunnel(org.opendaylight.yangtools.yang.common.Uint64 dpnId, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName)
-
removeDesignatedSwitchForExternalTunnel
public void removeDesignatedSwitchForExternalTunnel(org.opendaylight.yangtools.yang.common.Uint64 dpnId, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName)
-
installDhcpDropActionOnDpn
public void installDhcpDropActionOnDpn(org.opendaylight.yangtools.yang.common.Uint64 dpId)
-
updateLocalCache
public void updateLocalCache(org.opendaylight.yangtools.yang.common.Uint64 designatedDpnId, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName)
-
updateLocalCache
public void updateLocalCache(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName, java.lang.String vmMacAddress)
-
updateExistingVMTunnelIPCache
public void updateExistingVMTunnelIPCache(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName, java.lang.String vmMacAddress)
-
handleDesignatedDpnDown
public void handleDesignatedDpnDown(org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.util.List<org.opendaylight.yangtools.yang.common.Uint64> listOfDpns)
-
updateCacheAndInstallNewFlows
public void updateCacheAndInstallNewFlows(java.util.List<org.opendaylight.yangtools.yang.common.Uint64> listOfDpns, org.apache.commons.lang3.tuple.Pair<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress,java.lang.String> pair, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> tx) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException- Throws:
java.util.concurrent.ExecutionExceptionjava.lang.InterruptedException
-
addOrRemoveDhcpArpFlowforElan
public void addOrRemoveDhcpArpFlowforElan(java.lang.String elanInstanceName, boolean addFlow, java.lang.String dhcpIpAddress, java.lang.String dhcpMacAddress)
-
configureDhcpArpRequestResponseFlow
public void configureDhcpArpRequestResponseFlow(org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.lang.String elanInstanceName, boolean addFlow, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String dhcpIpAddress, java.lang.String dhcpMacAddress)
-
getSubnetDhcpPortData
public java.util.Optional<SubnetToDhcpPort> getSubnetDhcpPortData(java.lang.String elanInstanceName)
-
unInstallDhcpEntries
public void unInstallDhcpEntries(org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.lang.String vmMacAddress, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> tx) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException- Throws:
java.util.concurrent.ExecutionExceptionjava.lang.InterruptedException
-
handleTunnelStateDown
public java.util.List<com.google.common.util.concurrent.ListenableFuture<java.lang.Void>> handleTunnelStateDown(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, org.opendaylight.yangtools.yang.common.Uint64 interfaceDpn)
-
removeFromLocalCache
public void removeFromLocalCache(org.opendaylight.yangtools.yang.common.Uint64 designatedDpnId, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName)
-
updateVniMacToPortCache
public void updateVniMacToPortCache(org.opendaylight.yangtools.yang.common.Uint64 vni, java.lang.String macAddress, org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port port)
-
removeVniMacToPortCache
public void removeVniMacToPortCache(org.opendaylight.yangtools.yang.common.Uint64 vni, java.lang.String macAddress)
-
readVniMacToPortCache
public @Nullable org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port readVniMacToPortCache(org.opendaylight.yangtools.yang.common.Uint64 vni, java.lang.String macAddress)
-
getExternalTunnelInterfaceName
public java.lang.String getExternalTunnelInterfaceName(java.lang.String sourceNode, java.lang.String dstNode)
-
getNode
public static com.google.common.base.Optional<org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node> getNode(org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker, java.lang.String physicalSwitchNodeId)
-
createRemoteMcastMac
public @Nullable org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacs createRemoteMcastMac(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node dstDevice, java.lang.String logicalSwitchName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress internalTunnelIp)
-
installRemoteMcastMac
public void installRemoteMcastMac(org.opendaylight.yangtools.yang.common.Uint64 designatedDpnId, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, java.lang.String elanInstanceName)
-
handleTunnelStateUp
public java.util.List<com.google.common.util.concurrent.ListenableFuture<java.lang.Void>> handleTunnelStateUp(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress tunnelIp, org.opendaylight.yangtools.yang.common.Uint64 interfaceDpn)
-
removeFromAvailableCache
public void removeFromAvailableCache(org.apache.commons.lang3.tuple.Pair<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress,java.lang.String> tunnelIpElanName)
-
getTunnelIpBasedOnElan
public @Nullable org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress getTunnelIpBasedOnElan(java.lang.String elanInstanceName, java.lang.String vmMacAddress)
-
-