@Singleton public final class VpnUtil extends Object
Modifier and Type | Class and Description |
---|---|
static class |
VpnUtil.MicroTimestamp
Class to generate timestamps with microsecond precision.
|
Modifier and Type | Field and Description |
---|---|
static int |
SINGLE_TRANSACTION_BROKER_NO_RETRY |
Constructor and Description |
---|
VpnUtil(org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker,
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService idManager,
IFibManager fibManager,
IBgpManager bgpManager,
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService lockManager,
INeutronVpnManager neutronVpnService,
org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalManager,
org.opendaylight.infrautils.jobcoordinator.JobCoordinator jobCoordinator,
org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager interfaceManager,
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.OdlInterfaceRpcService ifmRpcService) |
Modifier and Type | Method and Description |
---|---|
static String |
buildIpMonitorJobKey(String ip,
String vpnName) |
void |
createLearntVpnVipToPort(String vpnName,
String fixedIp,
String portName,
String macAddress,
org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> writeOperTxn) |
void |
createLearntVpnVipToPortEvent(String vpnName,
String srcIp,
String destIP,
String portName,
String macAddress,
LearntVpnVipToPortEventAction action,
org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> writeOperTxn) |
void |
createVpnPortFixedIpToPort(String vpnName,
String fixedIp,
String portName,
boolean isLearntIp,
String macAddress,
org.opendaylight.controller.md.sal.binding.api.WriteTransaction writeConfigTxn) |
static void |
enableArpLearning(Boolean isArpLearningEnabled) |
List<VrfEntry> |
findVrfEntriesByNexthop(String rd,
String nexthop) |
List<Adjacency> |
getAdjacenciesForVpnInterfaceFromConfig(String intfName) |
List<VrfEntry> |
getAllVrfEntries(String rd)
Retrieves all the VrfEntries that belong to a given VPN searching by its
Route-Distinguisher.
|
String |
getAssociatedExternalSubnet(String extIp) |
static BigInteger |
getCookieL3(int vpnId) |
static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<DpnInterfaces> |
getElanDpnInterfaceOperationalDataPath(String elanInstanceName,
BigInteger dpId) |
static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanDpnInterfacesList> |
getElanDpnOperationalDataPath(String elanInstanceName) |
List<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid> |
getExternalNetworkRouterIds(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid networkId) |
com.google.common.base.Optional<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress> |
getGatewayIpAddressFromInterface(MacEntry macEntry) |
com.google.common.base.Optional<String> |
getGWMacAddressFromInterface(MacEntry macEntry,
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress gatewayIp) |
static String |
getIpPrefix(String prefix) |
static List<String> |
getIpsListFromExternalIps(List<ExternalIps> externalIps) |
static IpVersionChoice |
getIpVersionFromString(String ipAddress)
Get IpVersionChoice from String IP like x.x.x.x or an representation IPv6.
|
LearntVpnVipToPort |
getLearntVpnVipToPort(String vpnName,
String fixedIp) |
VpnPortipToPort |
getNeutronPortFromVpnPortFixedIp(String vpnName,
String fixedIp) |
static VpnPortipToPort |
getNeutronPortFromVpnPortFixedIp(org.opendaylight.genius.infra.TypedReadTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx,
String vpnName,
String fixedIp) |
static String |
getNextHopLabelKey(String rd,
String prefix) |
String |
getPrimaryRd(String vpnName)
Retrieves the primary rd of a vpn instance
Primary rd will be the first rd in the list of rds configured for a vpn instance
If rd list is empty, primary rd will be vpn instance name
Use this function only during create operation cycles.
|
static RouteOrigin |
getRouteOrigin(Adjacency.AdjacencyType adjacencyType) |
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid |
getSubnetFromExternalRouterByIp(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid routerId,
String ip) |
Subnetmap |
getSubnetmapFromItsUuid(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid subnetUuid)
Get Subnetmap from its Uuid.
|
int |
getUniqueId(String poolName,
String idKey) |
com.google.common.base.Optional<List<String>> |
getVpnHandlingIpv4AssociatedWithInterface(String interfaceName) |
long |
getVpnId(String vpnName)
Retrieves the dataplane identifier of a specific VPN, searching by its
VpnInstance name.
|
VpnInstance |
getVpnInstance(String vpnInstanceName) |
VpnInstanceOpDataEntry |
getVpnInstanceOpData(String rd) |
static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VpnInstanceOpDataEntry> |
getVpnInstanceOpDataIdentifier(String rd) |
static Adjacencies |
getVpnInterfaceAugmentation(List<Adjacency> nextHopList) |
static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VpnInterface> |
getVpnInterfaceIdentifier(String vpnInterfaceName) |
static List<String> |
getVpnListForVpnInterface(VpnInterface vpnInter) |
protected VpnPortipToPort |
getVpnPortipToPort(String vpnName,
String fixedIp) |
String |
getVpnRd(String vpnName)
Retrieves the VPN Route Distinguisher searching by its Vpn instance name.
|
static String |
getVpnRd(org.opendaylight.genius.infra.TypedReadTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx,
String vpnName) |
List<VpnInstanceOpDataEntry> |
getVpnsImportingMyRoute(String vpnName) |
com.google.common.base.Optional<String> |
getVpnSubnetGatewayIp(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid subnetUuid) |
List<VrfEntry> |
getVrfEntriesByOrigin(String rd,
List<RouteOrigin> originsToConsider)
Retrieves the VrfEntries that belong to a given VPN filtered out by
Origin, searching by its Route-Distinguisher.
|
static Boolean |
isArpLearningEnabled() |
static boolean |
isDualRouterVpnUpdate(List<String> oldVpnListCopy,
List<String> newVpnListCopy) |
static boolean |
isEligibleForBgp(String rd,
String vpnName,
BigInteger dpnId,
String networkName) |
static boolean |
isMatchedPrefixToInterface(Prefixes prefix,
VpnInterfaceOpDataEntry vpnInterface) |
boolean |
isVpnPendingDelete(String rd) |
void |
removeLearntVpnVipToPort(String vpnName,
String fixedIp,
org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> writeOperTxn) |
void |
removeLearntVpnVipToPortEvent(String eventId,
org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> writeOperTxn) |
void |
removeMipAdjacency(String vpnInterface,
String ipAddress) |
void |
removeMipAdjAndLearntIp(String vpnName,
String vpnInterface,
String prefix) |
boolean |
removeOrUpdateDSForExtraRoute(String vpnName,
String primaryRd,
String extraRouteRd,
String vpnInterfaceName,
String prefix,
String nextHop,
String nextHopTunnelIp,
org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> operTx) |
void |
removeVpnPortFixedIpToPort(String vpnName,
String fixedIp,
org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeConfigTxn) |
void |
removeVrfEntries(String rd,
List<VrfEntry> vrfEntries) |
void |
removeVrfEntriesByOrigin(String rd,
RouteOrigin origin)
Remove from MDSAL all those VrfEntries in a VPN that have an specific RouteOrigin.
|
static void |
sendNeighborSolicationToOfGroup(org.opendaylight.yang.gen.v1.urn.opendaylight.genius.ipv6.nd.util.rev170210.Ipv6NdUtilService ipv6NdUtilService,
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address srcIpv6Address,
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress srcMac,
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address dstIpv6Address,
Long ofGroupId,
BigInteger dpId) |
<T extends org.opendaylight.yangtools.yang.binding.DataObject> |
syncUpdate(org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType datastoreType,
org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
T data)
Deprecated.
|
<T extends org.opendaylight.yangtools.yang.binding.DataObject> |
syncWrite(org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType datastoreType,
org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
T data)
Deprecated.
|
void |
unlockSubnet(String subnetId) |
void |
updateVpnInstanceWithRdList(String vpnName,
List<String> updatedRdList) |
void |
withdrawRoutes(String rd,
List<VrfEntry> vrfEntries) |
public static final int SINGLE_TRANSACTION_BROKER_NO_RETRY
public VpnUtil(org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker, org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService idManager, IFibManager fibManager, IBgpManager bgpManager, org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev160413.LockManagerService lockManager, INeutronVpnManager neutronVpnService, org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalManager, org.opendaylight.infrautils.jobcoordinator.JobCoordinator jobCoordinator, org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager interfaceManager, org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.OdlInterfaceRpcService ifmRpcService)
public static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VpnInterface> getVpnInterfaceIdentifier(String vpnInterfaceName)
public List<VrfEntry> getVrfEntriesByOrigin(String rd, List<RouteOrigin> originsToConsider)
rd
- Route-distinguisher of the VPNoriginsToConsider
- Only entries whose origin is included in this list will be consideredpublic List<VrfEntry> getAllVrfEntries(String rd)
rd
- Route-distinguisher of the VPN@Nullable public VpnInstance getVpnInstance(String vpnInstanceName)
@Nullable public List<Adjacency> getAdjacenciesForVpnInterfaceFromConfig(String intfName)
public static Adjacencies getVpnInterfaceAugmentation(List<Adjacency> nextHopList)
public static BigInteger getCookieL3(int vpnId)
public long getVpnId(String vpnName)
vpnName
- Name of the VPNpublic String getVpnRd(String vpnName)
vpnName
- Name of the VPNpublic static String getVpnRd(org.opendaylight.genius.infra.TypedReadTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx, String vpnName)
public void removeVrfEntriesByOrigin(String rd, RouteOrigin origin)
rd
- Route Distinguisherorigin
- Origin of the Routes to be removed (see RouteOrigin
)public boolean removeOrUpdateDSForExtraRoute(String vpnName, String primaryRd, String extraRouteRd, String vpnInterfaceName, String prefix, String nextHop, String nextHopTunnelIp, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> operTx)
public static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VpnInstanceOpDataEntry> getVpnInstanceOpDataIdentifier(String rd)
@Nullable public VpnInstanceOpDataEntry getVpnInstanceOpData(String rd)
public com.google.common.base.Optional<List<String>> getVpnHandlingIpv4AssociatedWithInterface(String interfaceName)
@Deprecated public <T extends org.opendaylight.yangtools.yang.binding.DataObject> void syncWrite(org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType datastoreType, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, T data)
@Deprecated public <T extends org.opendaylight.yangtools.yang.binding.DataObject> void syncUpdate(org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType datastoreType, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, T data)
public void createLearntVpnVipToPort(String vpnName, String fixedIp, String portName, String macAddress, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> writeOperTxn)
public void removeLearntVpnVipToPort(String vpnName, String fixedIp, @Nullable org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> writeOperTxn)
public void removeVpnPortFixedIpToPort(String vpnName, String fixedIp, @Nullable org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Configuration> writeConfigTxn)
public void createLearntVpnVipToPortEvent(String vpnName, String srcIp, String destIP, String portName, String macAddress, LearntVpnVipToPortEventAction action, org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> writeOperTxn)
public void removeLearntVpnVipToPortEvent(String eventId, @Nullable org.opendaylight.genius.infra.TypedWriteTransaction<org.opendaylight.genius.infra.Datastore.Operational> writeOperTxn)
public void removeMipAdjAndLearntIp(String vpnName, String vpnInterface, String prefix)
@Nullable public VpnPortipToPort getNeutronPortFromVpnPortFixedIp(String vpnName, String fixedIp)
@Nullable public static VpnPortipToPort getNeutronPortFromVpnPortFixedIp(org.opendaylight.genius.infra.TypedReadTransaction<org.opendaylight.genius.infra.Datastore.Configuration> confTx, String vpnName, String fixedIp)
@Nullable public LearntVpnVipToPort getLearntVpnVipToPort(String vpnName, String fixedIp)
@Nonnull public List<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid> getExternalNetworkRouterIds(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid networkId)
public void unlockSubnet(String subnetId)
public com.google.common.base.Optional<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress> getGatewayIpAddressFromInterface(MacEntry macEntry)
public com.google.common.base.Optional<String> getGWMacAddressFromInterface(MacEntry macEntry, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress gatewayIp)
public com.google.common.base.Optional<String> getVpnSubnetGatewayIp(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid subnetUuid)
public String getPrimaryRd(String vpnName)
vpnName
- Name of the VPNpublic static List<String> getIpsListFromExternalIps(List<ExternalIps> externalIps)
@Nullable public org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid getSubnetFromExternalRouterByIp(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid routerId, String ip)
public static boolean isEligibleForBgp(@Nullable String rd, @Nullable String vpnName, @Nullable BigInteger dpnId, @Nullable String networkName)
public boolean isVpnPendingDelete(String rd)
public List<VpnInstanceOpDataEntry> getVpnsImportingMyRoute(String vpnName)
@Nullable public Subnetmap getSubnetmapFromItsUuid(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid subnetUuid)
subnetUuid
- the subnet's Uuidpublic static IpVersionChoice getIpVersionFromString(String ipAddress)
ipAddress
- String of an representation IP address V4 or V6public static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<DpnInterfaces> getElanDpnInterfaceOperationalDataPath(String elanInstanceName, BigInteger dpId)
public static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<ElanDpnInterfacesList> getElanDpnOperationalDataPath(String elanInstanceName)
public static boolean isMatchedPrefixToInterface(Prefixes prefix, VpnInterfaceOpDataEntry vpnInterface)
public static void sendNeighborSolicationToOfGroup(org.opendaylight.yang.gen.v1.urn.opendaylight.genius.ipv6.nd.util.rev170210.Ipv6NdUtilService ipv6NdUtilService, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address srcIpv6Address, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress srcMac, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address dstIpv6Address, Long ofGroupId, BigInteger dpId)
public static List<String> getVpnListForVpnInterface(VpnInterface vpnInter)
public void updateVpnInstanceWithRdList(String vpnName, List<String> updatedRdList)
public static RouteOrigin getRouteOrigin(Adjacency.AdjacencyType adjacencyType)
public static boolean isDualRouterVpnUpdate(List<String> oldVpnListCopy, List<String> newVpnListCopy)
public void createVpnPortFixedIpToPort(String vpnName, String fixedIp, String portName, boolean isLearntIp, String macAddress, org.opendaylight.controller.md.sal.binding.api.WriteTransaction writeConfigTxn)
protected VpnPortipToPort getVpnPortipToPort(String vpnName, String fixedIp)
public static void enableArpLearning(Boolean isArpLearningEnabled)
public static Boolean isArpLearningEnabled()
Copyright © 2019 OpenDaylight. All rights reserved.