final Collection<VpnToDpnList> vpnToDpnList;
if (vrfEntry.getParentVpnRd() != null
&& FibHelper.isControllerManagedNonSelfImportedRoute(RouteOrigin.value(vrfEntry.getOrigin()))) {
+ // This block MUST BE HIT only for PNF (Physical Network Function) FIB Entries.
VpnInstanceOpDataEntry parentVpnInstance = FibUtil.getVpnInstance(dataBroker, vrfEntry.getParentVpnRd());
vpnToDpnList = parentVpnInstance != null ? parentVpnInstance.getVpnToDpnList() :
vpnInstance.getVpnToDpnList();
+ LOG.info("createFibEntries: Processing creation of PNF FIB entry with rd {} prefix {}",
+ vrfEntry.getParentVpnRd(), vrfEntry.getDestPrefix());
} else {
vpnToDpnList = vpnInstance.getVpnToDpnList();
}
long localGroupId;
final BigInteger dpnId = localNextHopInfo.getDpnId();
if (Boolean.TRUE.equals(localNextHopInfo.isNatPrefix())) {
- LOG.debug("NAT Prefix {} with vpnId {} rd {}. Skip local dpn {} FIB processing",
- vrfEntry.getDestPrefix(), vpnId, rd, dpnId);
+ LOG.debug("checkCreateLocalFibEntry: NAT Prefix {} with vpnId {} rd {}. Skip local dpn {}"
+ + " FIB processing", vrfEntry.getDestPrefix(), vpnId, rd, dpnId);
return dpnId;
}
String jobKey = FibUtil.getCreateLocalNextHopJobKey(vpnId, dpnId, vrfEntry.getDestPrefix());
boolean isExtraroute, final Long parentVpnId) {
if (localNextHopInfo != null) {
final BigInteger dpnId = localNextHopInfo.getDpnId();
+ if (Boolean.TRUE.equals(localNextHopInfo.isNatPrefix())) {
+ LOG.debug("checkDeleteLocalFibEntry: NAT Prefix {} with vpnId {} rd {}. Skip local dpn {}"
+ + " FIB processing", vrfEntry.getDestPrefix(), vpnId, rd, dpnId);
+ return dpnId;
+ }
DataStoreJobCoordinator dataStoreCoordinator = DataStoreJobCoordinator.getInstance();
dataStoreCoordinator.enqueueJob(FibUtil.getCreateLocalNextHopJobKey(vpnId, dpnId,
vrfEntry.getDestPrefix()), () -> {
LOG.error("VPN Instance for rd {} is not available from VPN Op Instance Datastore", rd);
return;
}
- final Collection<VpnToDpnList> vpnToDpnList = vpnInstance.getVpnToDpnList();
+ final Collection<VpnToDpnList> vpnToDpnList;
+ if (vrfEntry.getParentVpnRd() != null
+ && FibHelper.isControllerManagedNonSelfImportedRoute(RouteOrigin.value(vrfEntry.getOrigin()))) {
+ // This block MUST BE HIT only for PNF (Physical Network Function) FIB Entries.
+ VpnInstanceOpDataEntry parentVpnInstance = FibUtil.getVpnInstance(dataBroker, vrfEntry.getParentVpnRd());
+ vpnToDpnList = parentVpnInstance != null ? parentVpnInstance.getVpnToDpnList() :
+ vpnInstance.getVpnToDpnList();
+ LOG.info("deleteFibEntries: Processing deletion of PNF FIB entry with rd {} prefix {}",
+ vrfEntry.getParentVpnRd(), vrfEntry.getDestPrefix());
+ } else {
+ vpnToDpnList = vpnInstance.getVpnToDpnList();
+ }
long elanTag = 0L;
SubnetRoute subnetRoute = vrfEntry.getAugmentation(SubnetRoute.class);
final java.util.Optional<Long> optionalLabel = FibUtil.getLabelFromRoutePaths(vrfEntry);
}
}
} else {
+ primaryRd = nextHop.isPhysNetworkFunc() ? nextHop.getSubnetId().getValue() : primaryRd;
fibManager.removeFibEntry(dataBroker, primaryRd, nextHop.getIpAddress(), writeConfigTxn);
}
deleteExtraRouteFromCurrentAndImportingVpns(currVpnIntf.getVpnInstanceName(),
adj.getIpAddress(), nh, rd, currVpnIntf.getName(), writeConfigTxn);
}
+ } else if (adj.isPhysNetworkFunc()) {
+ LOG.info("delAdjFromVpnInterface: deleting PNF adjacency prefix {} subnet [}",
+ adj.getIpAddress(), adj.getSubnetId());
+ fibManager.removeFibEntry(dataBroker, adj.getSubnetId().getValue(), adj.getIpAddress(),
+ writeConfigTxn);
}
break;
}