Class FibUtil
- java.lang.Object
-
- org.opendaylight.netvirt.fibmanager.FibUtil
-
@Singleton public class FibUtil extends java.lang.Object
-
-
Constructor Summary
Constructors Constructor Description FibUtil(org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker, org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService idManager, org.opendaylight.genius.itm.api.IITMProvider iitmProvider)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddFibEntryForRouterInterface(java.lang.String rd, java.lang.String prefix, RouterInterface routerInterface, org.opendaylight.yangtools.yang.common.Uint32 label, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeConfigTxn)static voidaddL3vpnDcGateWay(java.lang.String destinationIp, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> tx)voidaddOrUpdateFibEntry(java.lang.String rd, java.lang.String macAddress, java.lang.String prefix, java.util.List<java.lang.String> nextHopList, VrfEntryBase.EncapType encapType, org.opendaylight.yangtools.yang.common.Uint32 label, org.opendaylight.yangtools.yang.common.Uint32 l3vni, java.lang.String gwMacAddress, java.lang.String parentVpnRd, RouteOrigin origin, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeConfigTxn)voidaddVrfTable(java.lang.String rd, org.opendaylight.controller.md.sal.binding.api.WriteTransaction writeConfigTxn)static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface>buildStateInterfaceId(java.lang.String interfaceName)static java.lang.StringgetBroadcastAddressFromCidr(java.lang.String cidr)static java.lang.StringgetCreateLocalNextHopJobKey(org.opendaylight.yangtools.yang.common.Uint32 vpnId, org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.lang.String prefix)static java.lang.StringgetCreateRemoteNextHopJobKey(org.opendaylight.yangtools.yang.common.Uint32 vpnId, org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.lang.String prefix)static java.util.Optional<java.lang.String>getFirstNextHopAddress(VrfEntry vrfEntry)static java.lang.StringgetGreLbGroupKey(java.util.List<java.lang.String> availableDcGws)@Nullable org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfacegetInterfaceStateFromOperDS(java.lang.String interfaceName)static java.lang.StringgetIpPrefix(java.lang.String prefix)static java.lang.StringgetJobKeyForRdPrefix(java.lang.String rd, java.lang.String prefix)static java.lang.StringgetJobKeyForVpnIdDpnId(org.opendaylight.yangtools.yang.common.Uint32 vpnId, org.opendaylight.yangtools.yang.common.Uint64 dpnId)java.util.List<java.lang.String>getL3VpnDcGateWays()static java.util.Optional<org.opendaylight.yangtools.yang.common.Uint32>getLabelForNextHop(VrfEntry vrfEntry, java.lang.String nextHopIp)static java.util.Optional<org.opendaylight.yangtools.yang.common.Uint32>getLabelFromRoutePaths(VrfEntry vrfEntry)java.util.List<java.lang.String>getNextHopAddresses(java.lang.String rd, java.lang.String prefix)static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VrfEntry>getNextHopIdentifier(java.lang.String rd, java.lang.String prefix)com.google.common.base.Optional<Nexthops>getNexthops(java.lang.String nextHopKey)@Nullable org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelListgetTunnelState(java.lang.String interfaceName)org.opendaylight.yangtools.yang.common.Uint32getVpnId(java.lang.String vpnName)@Nullable java.lang.StringgetVpnNameFromId(org.opendaylight.yangtools.yang.common.Uint32 vpnId)com.google.common.base.Optional<java.lang.String>getVpnNameFromRd(java.lang.String rd)Retrieves the VpnInstance name (typically the VPN Uuid) out from the route-distinguisher.booleanisInterfacePresentInDpn(java.lang.String vpnName, org.opendaylight.yangtools.yang.common.Uint64 dpnId)static booleanisTunnelInterface(org.opendaylight.netvirt.fibmanager.NexthopManager.AdjacencyResult adjacencyResult)static booleanlockCluster(org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService lockManager, java.lang.String lockName, long tryLockPeriod)voidremoveFibEntry(java.lang.String rd, java.lang.String prefix, java.lang.String eventSource, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeConfigTxn)static voidremoveL3vpnDcGateWay(java.lang.String destinationIp, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> tx)voidremoveOrUpdateFibEntry(java.lang.String rd, java.lang.String prefix, java.lang.String nextHopToRemove, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeConfigTxn)Removes a specific Nexthop from a VrfEntry.static voidremoveOrUpdateNextHopInfo(org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.lang.String nextHopKey, java.lang.String groupId, Nexthops nexthops, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> tx)voidremoveVrfTable(java.lang.String rd, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeConfigTxn)static voidunlockCluster(org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService lockManager, java.lang.String lockName)static voidupdateLbGroupInfo(org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.lang.String groupIdKey, java.lang.String groupId, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> tx)voidupdateRoutePathForFibEntry(java.lang.String rd, java.lang.String prefix, java.lang.String nextHop, org.opendaylight.yangtools.yang.common.Uint32 label, boolean nextHopAdd, org.opendaylight.controller.md.sal.binding.api.WriteTransaction writeConfigTxn)Adds or removes nextHop from routePath based on the flag nextHopAdd.voidupdateUsedRdAndVpnToExtraRoute(org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> operTx, java.lang.String tunnelIpRemoved, java.lang.String primaryRd, java.lang.String prefix)voidwriteFibEntryToDs(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VrfEntry> vrfEntryId, java.lang.String prefix, java.util.List<java.lang.String> nextHopList, org.opendaylight.yangtools.yang.common.Uint32 label, org.opendaylight.yangtools.yang.common.Uint32 l3vni, VrfEntryBase.EncapType encapType, RouteOrigin origin, java.lang.String macAddress, java.lang.String gatewayMacAddress, java.lang.String parentVpnRd, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeConfigTxn)
-
-
-
Method Detail
-
getVpnId
public org.opendaylight.yangtools.yang.common.Uint32 getVpnId(java.lang.String vpnName)
-
getVpnNameFromRd
public com.google.common.base.Optional<java.lang.String> getVpnNameFromRd(java.lang.String rd)
Retrieves the VpnInstance name (typically the VPN Uuid) out from the route-distinguisher.- Parameters:
rd- The route-distinguisher- Returns:
- The vpn instance
-
getVpnNameFromId
public @Nullable java.lang.String getVpnNameFromId(org.opendaylight.yangtools.yang.common.Uint32 vpnId)
-
addOrUpdateFibEntry
public void addOrUpdateFibEntry(java.lang.String rd, java.lang.String macAddress, java.lang.String prefix, java.util.List<java.lang.String> nextHopList, VrfEntryBase.EncapType encapType, org.opendaylight.yangtools.yang.common.Uint32 label, org.opendaylight.yangtools.yang.common.Uint32 l3vni, java.lang.String gwMacAddress, java.lang.String parentVpnRd, RouteOrigin origin, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeConfigTxn)
-
writeFibEntryToDs
public void writeFibEntryToDs(org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VrfEntry> vrfEntryId, java.lang.String prefix, java.util.List<java.lang.String> nextHopList, org.opendaylight.yangtools.yang.common.Uint32 label, org.opendaylight.yangtools.yang.common.Uint32 l3vni, VrfEntryBase.EncapType encapType, RouteOrigin origin, java.lang.String macAddress, java.lang.String gatewayMacAddress, java.lang.String parentVpnRd, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeConfigTxn)
-
addFibEntryForRouterInterface
public void addFibEntryForRouterInterface(java.lang.String rd, java.lang.String prefix, RouterInterface routerInterface, org.opendaylight.yangtools.yang.common.Uint32 label, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeConfigTxn)
-
removeFibEntry
public void removeFibEntry(java.lang.String rd, java.lang.String prefix, java.lang.String eventSource, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeConfigTxn)
-
removeOrUpdateFibEntry
public void removeOrUpdateFibEntry(java.lang.String rd, java.lang.String prefix, java.lang.String nextHopToRemove, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeConfigTxn)Removes a specific Nexthop from a VrfEntry. If Nexthop to remove is the last one in the VrfEntry, then the VrfEntry is removed too.- Parameters:
rd- Route-Distinguisher to which the VrfEntry belongs toprefix- Destination of the routenextHopToRemove- Specific nexthop within the Route to be removed. If null or empty, then the whole VrfEntry is removed
-
updateRoutePathForFibEntry
public void updateRoutePathForFibEntry(java.lang.String rd, java.lang.String prefix, java.lang.String nextHop, org.opendaylight.yangtools.yang.common.Uint32 label, boolean nextHopAdd, org.opendaylight.controller.md.sal.binding.api.WriteTransaction writeConfigTxn)Adds or removes nextHop from routePath based on the flag nextHopAdd.
-
addVrfTable
public void addVrfTable(java.lang.String rd, org.opendaylight.controller.md.sal.binding.api.WriteTransaction writeConfigTxn)
-
removeVrfTable
public void removeVrfTable(java.lang.String rd, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeConfigTxn)
-
getLabelFromRoutePaths
public static java.util.Optional<org.opendaylight.yangtools.yang.common.Uint32> getLabelFromRoutePaths(VrfEntry vrfEntry)
-
getFirstNextHopAddress
public static java.util.Optional<java.lang.String> getFirstNextHopAddress(VrfEntry vrfEntry)
-
getLabelForNextHop
public static java.util.Optional<org.opendaylight.yangtools.yang.common.Uint32> getLabelForNextHop(VrfEntry vrfEntry, java.lang.String nextHopIp)
-
getTunnelState
public @Nullable org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.StateTunnelList getTunnelState(java.lang.String interfaceName) throws org.opendaylight.controller.md.sal.common.api.data.ReadFailedException- Throws:
org.opendaylight.controller.md.sal.common.api.data.ReadFailedException
-
buildStateInterfaceId
public static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> buildStateInterfaceId(java.lang.String interfaceName)
-
getInterfaceStateFromOperDS
public @Nullable org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface getInterfaceStateFromOperDS(java.lang.String interfaceName)
-
getCreateLocalNextHopJobKey
public static java.lang.String getCreateLocalNextHopJobKey(org.opendaylight.yangtools.yang.common.Uint32 vpnId, org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.lang.String prefix)
-
getCreateRemoteNextHopJobKey
public static java.lang.String getCreateRemoteNextHopJobKey(org.opendaylight.yangtools.yang.common.Uint32 vpnId, org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.lang.String prefix)
-
getJobKeyForRdPrefix
public static java.lang.String getJobKeyForRdPrefix(java.lang.String rd, java.lang.String prefix)
-
getJobKeyForVpnIdDpnId
public static java.lang.String getJobKeyForVpnIdDpnId(org.opendaylight.yangtools.yang.common.Uint32 vpnId, org.opendaylight.yangtools.yang.common.Uint64 dpnId)
-
updateUsedRdAndVpnToExtraRoute
public void updateUsedRdAndVpnToExtraRoute(org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> operTx, java.lang.String tunnelIpRemoved, java.lang.String primaryRd, java.lang.String prefix) throws java.util.concurrent.ExecutionException, java.lang.InterruptedException- Throws:
java.util.concurrent.ExecutionExceptionjava.lang.InterruptedException
-
getIpPrefix
public static java.lang.String getIpPrefix(java.lang.String prefix)
-
isTunnelInterface
public static boolean isTunnelInterface(org.opendaylight.netvirt.fibmanager.NexthopManager.AdjacencyResult adjacencyResult)
-
getNextHopIdentifier
public static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VrfEntry> getNextHopIdentifier(java.lang.String rd, java.lang.String prefix)
-
getNextHopAddresses
public java.util.List<java.lang.String> getNextHopAddresses(java.lang.String rd, java.lang.String prefix)
-
getGreLbGroupKey
public static java.lang.String getGreLbGroupKey(java.util.List<java.lang.String> availableDcGws)
-
updateLbGroupInfo
public static void updateLbGroupInfo(org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.lang.String groupIdKey, java.lang.String groupId, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> tx)
-
removeL3vpnDcGateWay
public static void removeL3vpnDcGateWay(java.lang.String destinationIp, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> tx) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException- Throws:
java.lang.InterruptedExceptionjava.util.concurrent.ExecutionException
-
addL3vpnDcGateWay
public static void addL3vpnDcGateWay(java.lang.String destinationIp, org.opendaylight.genius.infra.TypedReadWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> tx) throws java.lang.InterruptedException, java.util.concurrent.ExecutionException- Throws:
java.lang.InterruptedExceptionjava.util.concurrent.ExecutionException
-
removeOrUpdateNextHopInfo
public static void removeOrUpdateNextHopInfo(org.opendaylight.yangtools.yang.common.Uint64 dpnId, java.lang.String nextHopKey, java.lang.String groupId, Nexthops nexthops, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> tx)
-
getNexthops
public com.google.common.base.Optional<Nexthops> getNexthops(java.lang.String nextHopKey)
-
getL3VpnDcGateWays
public java.util.List<java.lang.String> getL3VpnDcGateWays()
-
getBroadcastAddressFromCidr
public static java.lang.String getBroadcastAddressFromCidr(java.lang.String cidr)
-
lockCluster
public static boolean lockCluster(org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService lockManager, java.lang.String lockName, long tryLockPeriod)
-
unlockCluster
public static void unlockCluster(org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService lockManager, java.lang.String lockName)
-
isInterfacePresentInDpn
public boolean isInterfacePresentInDpn(java.lang.String vpnName, org.opendaylight.yangtools.yang.common.Uint64 dpnId)
-
-