@Singleton public class ElanInterfaceManager extends org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase<ElanInterface,ElanInterfaceManager> implements AutoCloseable
ElanInterface
Constructor and Description |
---|
ElanInterfaceManager(org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker,
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService managerService,
org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalApiManager,
org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager interfaceManager,
ElanForwardingEntriesHandler elanForwardingEntriesHandler,
INeutronVpnManager neutronVpnManager,
ElanItmUtils elanItmUtils,
ElanEtreeUtils elanEtreeUtils,
ElanL2GatewayUtils elanL2GatewayUtils) |
Modifier and Type | Method and Description |
---|---|
protected void |
add(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanInterface> identifier,
ElanInterface elanInterfaceAdded) |
protected ElanInterfaceManager |
getDataTreeChangeListener() |
List<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket> |
getRemoteBCGroupBuckets(ElanInstance elanInfo,
DpnInterfaces dpnInterfaces,
BigInteger dpnId,
int bucketId,
long elanTag) |
List<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket> |
getRemoteBCGroupBucketsOfElanExternalTeps(ElanInstance elanInfo,
BigInteger dpnId,
int bucketId) |
List<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket> |
getRemoteBCGroupBucketsOfElanL2GwDevices(ElanInstance elanInfo,
BigInteger dpnId,
int bucketId) |
protected org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanInterface> |
getWildCardPath() |
void |
handleExternalInterfaceEvent(ElanInstance elanInstance,
DpnInterfaces dpnInterfaces,
BigInteger dpId) |
void |
handleExternalTunnelStateEvent(org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.external.tunnel.list.ExternalTunnel externalTunnel,
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface intrf)
Handle external tunnel state event.
|
void |
handleInternalTunnelStateEvent(BigInteger srcDpId,
BigInteger dstDpId) |
void |
init() |
List<com.google.common.util.concurrent.ListenableFuture<Void>> |
installDMacAddressTables(ElanInstance elanInfo,
org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo,
BigInteger dstDpId) |
void |
installEntriesForFirstInterfaceonDpn(ElanInstance elanInfo,
org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo,
DpnInterfaces dpnInterfaces,
boolean isFirstInterfaceInDpn,
org.opendaylight.controller.md.sal.binding.api.WriteTransaction tx) |
protected void |
remove(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanInterface> identifier,
ElanInterface del) |
void |
removeElanBroadcastGroup(ElanInstance elanInfo,
org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo,
org.opendaylight.controller.md.sal.binding.api.WriteTransaction deleteFlowGroupTx) |
List<com.google.common.util.concurrent.ListenableFuture<Void>> |
removeElanInterface(ElanInstance elanInfo,
String interfaceName,
org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo) |
void |
removeFilterEqualsTable(ElanInstance elanInfo,
org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo,
org.opendaylight.controller.md.sal.binding.api.WriteTransaction deleteFlowGroupTx) |
protected void |
removeInterfaceStaticMacEntries(String elanInstanceName,
String interfaceName,
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress physAddress) |
void |
removeLocalBroadcastGroup(ElanInstance elanInfo,
org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo,
org.opendaylight.controller.md.sal.binding.api.WriteTransaction deleteFlowGroupTx) |
void |
setElanUtils(ElanUtils elanUtils)
This method is used instead of "regular" standard constructor dependency injection in, only,
ElanServiceProvider's constructor to wire things together.
|
void |
setExternalTunnelTable(BigInteger dpnId,
ElanInstance elanInfo)
Installs a flow in the External Tunnel table consisting in translating
the VNI retrieved from the packet that came over a tunnel with a TOR into
elanTag that will be used later in the ELANs pipeline.
|
void |
setupElanBroadcastGroups(ElanInstance elanInfo,
BigInteger dpnId) |
void |
setupElanBroadcastGroups(ElanInstance elanInfo,
DpnInterfaces dpnInterfaces,
BigInteger dpnId) |
void |
setupFilterEqualsTable(ElanInstance elanInfo,
org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo,
org.opendaylight.controller.md.sal.binding.api.WriteTransaction writeFlowGroupTx) |
void |
setupLeavesEtreeBroadcastGroups(ElanInstance elanInfo,
DpnInterfaces dpnInterfaces,
BigInteger dpnId) |
void |
setupLocalBroadcastGroups(ElanInstance elanInfo,
DpnInterfaces newDpnInterface,
org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo) |
void |
setupStandardElanBroadcastGroups(ElanInstance elanInfo,
DpnInterfaces dpnInterfaces,
BigInteger dpnId) |
void |
setupStandardLocalBroadcastGroups(ElanInstance elanInfo,
DpnInterfaces newDpnInterface,
org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo) |
void |
setupTerminateServiceTable(ElanInstance elanInfo,
BigInteger dpId,
long elanTag,
org.opendaylight.controller.md.sal.binding.api.WriteTransaction writeFlowGroupTx) |
void |
setupTerminateServiceTable(ElanInstance elanInfo,
BigInteger dpId,
org.opendaylight.controller.md.sal.binding.api.WriteTransaction writeFlowGroupTx) |
void |
setupUnknownDMacTable(ElanInstance elanInfo,
BigInteger dpId,
org.opendaylight.controller.md.sal.binding.api.WriteTransaction writeFlowGroupTx) |
protected void |
unbindService(String interfaceName,
org.opendaylight.controller.md.sal.binding.api.WriteTransaction tx) |
void |
unsetExternalTunnelTable(BigInteger dpnId,
ElanInstance elanInfo)
Removes, from External Tunnel table, the flow that translates from VNI to
elanTag.
|
protected void |
update(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanInterface> identifier,
ElanInterface original,
ElanInterface update) |
void |
updateRemoteBroadcastGroupForAllElanDpns(ElanInstance elanInfo) |
addAfterListener, addBeforeListener, close, onDataTreeChanged, registerListener
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
close
@Inject public ElanInterfaceManager(org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker, org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService managerService, org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalApiManager, org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager interfaceManager, ElanForwardingEntriesHandler elanForwardingEntriesHandler, INeutronVpnManager neutronVpnManager, ElanItmUtils elanItmUtils, ElanEtreeUtils elanEtreeUtils, ElanL2GatewayUtils elanL2GatewayUtils)
public void setElanUtils(ElanUtils elanUtils)
@PostConstruct public void init()
init
in class org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase<ElanInterface,ElanInterfaceManager>
protected org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanInterface> getWildCardPath()
getWildCardPath
in class org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase<ElanInterface,ElanInterfaceManager>
protected void remove(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanInterface> identifier, ElanInterface del)
remove
in class org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase<ElanInterface,ElanInterfaceManager>
public List<com.google.common.util.concurrent.ListenableFuture<Void>> removeElanInterface(ElanInstance elanInfo, String interfaceName, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo)
protected void update(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanInterface> identifier, ElanInterface original, ElanInterface update)
update
in class org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase<ElanInterface,ElanInterfaceManager>
protected void add(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanInterface> identifier, ElanInterface elanInterfaceAdded)
add
in class org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase<ElanInterface,ElanInterfaceManager>
protected void removeInterfaceStaticMacEntries(String elanInstanceName, String interfaceName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress physAddress)
public void installEntriesForFirstInterfaceonDpn(ElanInstance elanInfo, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo, DpnInterfaces dpnInterfaces, boolean isFirstInterfaceInDpn, org.opendaylight.controller.md.sal.binding.api.WriteTransaction tx)
public void setupFilterEqualsTable(ElanInstance elanInfo, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo, org.opendaylight.controller.md.sal.binding.api.WriteTransaction writeFlowGroupTx)
public void removeFilterEqualsTable(ElanInstance elanInfo, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo, org.opendaylight.controller.md.sal.binding.api.WriteTransaction deleteFlowGroupTx)
public List<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket> getRemoteBCGroupBuckets(ElanInstance elanInfo, DpnInterfaces dpnInterfaces, BigInteger dpnId, int bucketId, long elanTag)
public List<com.google.common.util.concurrent.ListenableFuture<Void>> installDMacAddressTables(ElanInstance elanInfo, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo, BigInteger dstDpId) throws ElanException
ElanException
public void setupElanBroadcastGroups(ElanInstance elanInfo, BigInteger dpnId)
public void setupElanBroadcastGroups(ElanInstance elanInfo, DpnInterfaces dpnInterfaces, BigInteger dpnId)
public void setupStandardElanBroadcastGroups(ElanInstance elanInfo, DpnInterfaces dpnInterfaces, BigInteger dpnId)
public void setupLeavesEtreeBroadcastGroups(ElanInstance elanInfo, DpnInterfaces dpnInterfaces, BigInteger dpnId)
public void setupLocalBroadcastGroups(ElanInstance elanInfo, DpnInterfaces newDpnInterface, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo)
public void setupStandardLocalBroadcastGroups(ElanInstance elanInfo, DpnInterfaces newDpnInterface, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo)
public void removeLocalBroadcastGroup(ElanInstance elanInfo, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo, org.opendaylight.controller.md.sal.binding.api.WriteTransaction deleteFlowGroupTx)
public void removeElanBroadcastGroup(ElanInstance elanInfo, org.opendaylight.genius.interfacemanager.globals.InterfaceInfo interfaceInfo, org.opendaylight.controller.md.sal.binding.api.WriteTransaction deleteFlowGroupTx)
public void setExternalTunnelTable(BigInteger dpnId, ElanInstance elanInfo)
dpnId
- the dpn idelanInfo
- the elan infopublic void unsetExternalTunnelTable(BigInteger dpnId, ElanInstance elanInfo)
dpnId
- DPN whose Ext Tunnel table is going to be modifiedelanInfo
- holds the elanTag needed for selecting the flow to be removedpublic void setupTerminateServiceTable(ElanInstance elanInfo, BigInteger dpId, org.opendaylight.controller.md.sal.binding.api.WriteTransaction writeFlowGroupTx)
public void setupTerminateServiceTable(ElanInstance elanInfo, BigInteger dpId, long elanTag, org.opendaylight.controller.md.sal.binding.api.WriteTransaction writeFlowGroupTx)
public void setupUnknownDMacTable(ElanInstance elanInfo, BigInteger dpId, org.opendaylight.controller.md.sal.binding.api.WriteTransaction writeFlowGroupTx)
protected void unbindService(String interfaceName, org.opendaylight.controller.md.sal.binding.api.WriteTransaction tx)
public void handleInternalTunnelStateEvent(BigInteger srcDpId, BigInteger dstDpId) throws ElanException
ElanException
public void handleExternalTunnelStateEvent(org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.external.tunnel.list.ExternalTunnel externalTunnel, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface intrf) throws ElanException
externalTunnel
- the external tunnelintrf
- the interfaceElanException
- in case of issues creating the flow objectspublic void updateRemoteBroadcastGroupForAllElanDpns(ElanInstance elanInfo)
public List<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket> getRemoteBCGroupBucketsOfElanL2GwDevices(ElanInstance elanInfo, BigInteger dpnId, int bucketId)
public List<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket> getRemoteBCGroupBucketsOfElanExternalTeps(ElanInstance elanInfo, BigInteger dpnId, int bucketId)
protected ElanInterfaceManager getDataTreeChangeListener()
getDataTreeChangeListener
in class org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase<ElanInterface,ElanInterfaceManager>
public void handleExternalInterfaceEvent(ElanInstance elanInstance, DpnInterfaces dpnInterfaces, BigInteger dpId)
Copyright © 2018 OpenDaylight. All rights reserved.