package org.opendaylight.netvirt.vpnmanager.iplearn;
-import com.google.common.base.Optional;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
-import java.math.BigInteger;
import java.util.List;
import java.util.Objects;
+import java.util.Optional;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefixBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.LearntVpnVipToPortEventAction;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.adjacency.list.Adjacency;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.learnt.vpn.vip.to.port.data.LearntVpnVipToPort;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.adjacency.list.Adjacency;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.neutron.vpn.portip.port.data.VpnPortipToPort;
import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.config.rev161130.VpnConfig;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port;
+import org.opendaylight.yangtools.yang.common.Uint64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOG = LoggerFactory.getLogger(AbstractIpLearnNotificationHandler.class);
// temp where Key is VPNInstance+IP and value is timestamp
- private final Cache<Pair<String, String>, BigInteger> migrateIpCache;
+ private final Cache<Pair<String, String>, Uint64> migrateIpCache;
protected final VpnConfig config;
protected final VpnUtil vpnUtil;
this.vpnUtil = vpnUtil;
this.neutronVpnManager = neutronVpnManager;
- long duration = config.getIpLearnTimeout() * 10;
+ long duration = config.getIpLearnTimeout().toJava() * 10;
long cacheSize = config.getMigrateIpCacheSize().longValue();
migrateIpCache =
CacheBuilder.newBuilder().maximumSize(cacheSize).expireAfterWrite(duration,
}
protected void validateAndProcessIpLearning(String srcInterface, IpAddress srcIP, MacAddress srcMac,
- IpAddress targetIP, BigInteger metadata) {
+ IpAddress targetIP, Uint64 metadata) {
List<Adjacency> adjacencies = vpnUtil.getAdjacenciesForVpnInterfaceFromConfig(srcInterface);
IpVersionChoice srcIpVersion = VpnUtil.getIpVersionFromString(srcIP.stringValue());
boolean isSrcIpVersionPartOfVpn = false;
processIpLearning(srcInterface, srcIP, srcMac, metadata, targetIP);
}
- protected void processIpLearning(String srcInterface, IpAddress srcIP, MacAddress srcMac, BigInteger metadata,
+ protected void processIpLearning(String srcInterface, IpAddress srcIP, MacAddress srcMac, Uint64 metadata,
IpAddress dstIP) {
if (!VpnUtil.isArpLearningEnabled()) {
LOG.trace("Not handling packet as ARP Based Learning is disabled");
return;
}
- if (metadata == null || Objects.equals(metadata, BigInteger.ZERO)) {
+ if (metadata == null || Objects.equals(metadata, Uint64.ZERO)) {
return;
}
// within 300sec
// after reboot, it would be ignored.
if (vpnPortipToPort != null && vpnPortipToPort.isLearntIp()) {
- if (System.currentTimeMillis() < this.bootupTime + config.getBootDelayArpLearning() * 1000) {
+ if (System.currentTimeMillis()
+ < this.bootupTime + config.getBootDelayArpLearning().toJava() * 1000) {
LOG.trace("GARP/Arp Response not handled for IP {} vpnName {} for time {}s",
vpnPortipToPort.getPortFixedip(), vpnName, config.getBootDelayArpLearning());
continue;
}
LOG.debug("IP_MIGRATE_CACHE: add to dirty cache IP {} vpnName {} with MAC {}", ipToQuery, vpnName, srcMac);
migrateIpCache.put(new ImmutablePair<>(vpnName, ipToQuery),
- new BigInteger(String.valueOf(System.currentTimeMillis())));
+ Uint64.valueOf(String.valueOf(System.currentTimeMillis())));
}
private boolean isIpInMigrateCache(String vpnName, String ipToQuery) {
return false;
}
Pair<String, String> keyPair = new ImmutablePair<>(vpnName, ipToQuery);
- BigInteger prevTimeStampCached = migrateIpCache.getIfPresent(keyPair);
+ Uint64 prevTimeStampCached = migrateIpCache.getIfPresent(keyPair);
if (prevTimeStampCached == null) {
LOG.debug("IP_MIGRATE_CACHE: there is no IP {} vpnName {} in dirty cache, so learn it",
ipToQuery, vpnName);
return false;
}
- if (System.currentTimeMillis() > prevTimeStampCached.longValue() + config.getIpLearnTimeout()) {
+ if (System.currentTimeMillis() > prevTimeStampCached.longValue() + config.getIpLearnTimeout().toJava()) {
LOG.debug("IP_MIGRATE_CACHE: older than timeout value - remove from dirty cache IP {} vpnName {}",
ipToQuery, vpnName);
migrateIpCache.invalidate(keyPair);