void removeOrUpdateFibEntry(String rd, String prefix, String nextHopToRemove,
TypedWriteTransaction<Configuration> writeConfigTxn);
- void removeFibEntry(String rd, String prefix, @Nullable TypedWriteTransaction<Configuration> writeConfigTxn);
+ void removeFibEntry(String rd, String prefix, String eventSource,
+ @Nullable TypedWriteTransaction<Configuration> writeConfigTxn);
void updateRoutePathForFibEntry(String rd, String prefix, String nextHop,
Uint32 label, boolean nextHopAdd, WriteTransaction writeConfigTxn);
}
@Override
- public void removeFibEntry(String rd, String prefix, TypedWriteTransaction<Configuration> writeConfigTxn) {
- fibUtil.removeFibEntry(rd, prefix, writeConfigTxn);
+ public void removeFibEntry(String rd, String prefix, String eventSource,
+ TypedWriteTransaction<Configuration> writeConfigTxn) {
+ fibUtil.removeFibEntry(rd, prefix, eventSource, writeConfigTxn);
}
@Override
builder.setRoutePaths(routePaths);
}
- public void removeFibEntry(String rd, String prefix, TypedWriteTransaction<Configuration> writeConfigTxn) {
+ @SuppressWarnings("checkstyle:IllegalCatch")
+ public void removeFibEntry(String rd, String prefix, String eventSource,
+ TypedWriteTransaction<Configuration> writeConfigTxn) {
if (rd == null || rd.isEmpty()) {
LOG.error("Prefix {} not associated with vpn", prefix);
return;
}
- LOG.debug("removeFibEntry: Removing fib entry with destination prefix {} from vrf table for rd {}",
- prefix, rd);
-
- InstanceIdentifier.InstanceIdentifierBuilder<VrfEntry> idBuilder =
- InstanceIdentifier.builder(FibEntries.class)
- .child(VrfTables.class, new VrfTablesKey(rd)).child(VrfEntry.class, new VrfEntryKey(prefix));
- InstanceIdentifier<VrfEntry> vrfEntryId = idBuilder.build();
- if (writeConfigTxn != null) {
- writeConfigTxn.delete(vrfEntryId);
- } else {
- MDSALUtil.syncDelete(dataBroker, LogicalDatastoreType.CONFIGURATION, vrfEntryId);
+ try {
+ LOG.debug("removeFibEntry: Removing fib entry with destination prefix {} from vrf table for rd {}",
+ prefix, rd);
+
+ InstanceIdentifier.InstanceIdentifierBuilder<VrfEntry> idBuilder =
+ InstanceIdentifier.builder(FibEntries.class)
+ .child(VrfTables.class, new VrfTablesKey(rd)).child(VrfEntry.class,
+ new VrfEntryKey(prefix));
+ InstanceIdentifier<VrfEntry> vrfEntryId = idBuilder.build();
+ if (writeConfigTxn != null) {
+ writeConfigTxn.delete(vrfEntryId);
+ } else {
+ MDSALUtil.syncDelete(dataBroker, LogicalDatastoreType.CONFIGURATION, vrfEntryId);
+ }
+ LOG.error("removeFibEntry: Removed Fib Entry rd {} prefix {} source {} ",
+ rd, prefix, eventSource);
+ } catch (RuntimeException e) {
+ LOG.error("removeFibEntry: Unable to remove Fib Entry for rd {} prefix {} source {} ",
+ rd, prefix, eventSource);
}
- LOG.info("removeFibEntry: Removed Fib Entry rd {} prefix {}",rd, prefix);
}
/**
*/
public void removeOrUpdateFibEntry(String rd, String prefix, String nextHopToRemove,
TypedWriteTransaction<Configuration> writeConfigTxn) {
-
LOG.debug("Removing fib entry with destination prefix {} from vrf table for rd {} nextHop {}", prefix, rd,
nextHopToRemove);
NatUtil.removeFlow(confTx, mdsalManager, dpnId, NwConstants.L3_FIB_TABLE, flowRef);
String rd = NatUtil.getVpnRd(dataBroker, subNetId);
String ipPrefix = externalIp + "/32";
- fibManager.removeFibEntry(rd, ipPrefix, confTx);
+ fibManager.removeFibEntry(rd, ipPrefix, null, confTx);
NatUtil.deletePrefixToInterface(dataBroker, NatUtil.getVpnId(dataBroker, subNetId), ipPrefix);
}
String rd = NatUtil.getVpnRd(dataBroker, vpnName);
for (String externalIp : externalIpsCache) {
LOG.debug("isNaptSwitchDown : Removing Fib entry rd {} prefix {}", rd, externalIp);
- fibManager.removeFibEntry(rd, externalIp, null);
+ fibManager.removeFibEntry(rd, externalIp, null, null);
}
}
} else {
Optional<VrfEntry> ent = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, vrfEntryId);
if (ent.isPresent()) {
LOG.debug("removeFibEntry : Removing Fib entry rd {} prefix {}", rd, prefix);
- fibManager.removeFibEntry(rd, prefix, null);
+ fibManager.removeFibEntry(rd, prefix, null, null);
}
}
for (String externalIp : externalIps) {
String rd = NatUtil.getVpnRd(dataBroker, externalVpnName);
LOG.debug("hndlTepAddOnNaptSwitch : Removing Fib entry rd {} prefix {}", rd, externalIp);
- fibManager.removeFibEntry(rd, externalIp, null);
+ fibManager.removeFibEntry(rd, externalIp, null, null);
}
/*
String rd, String prefix, String vpnName) {
try {
LOG.debug("removePrefixFromBGP: Removing Fib entry rd {} prefix {}", rd, prefix);
- fibManager.removeFibEntry(rd, prefix, null);
+ fibManager.removeFibEntry(rd, prefix, null, null);
if (rd != null && !rd.equalsIgnoreCase(vpnName)) {
bgpManager.withdrawPrefix(rd, prefix);
}
LOG.info("removeAdjacenciesFromVpn: Removing PNF FIB entry rd {} prefix {}",
nextHop.getSubnetId().getValue(), nextHop.getIpAddress());
fibManager.removeFibEntry(nextHop.getSubnetId().getValue(), nextHop.getIpAddress(),
- null/*writeCfgTxn*/);
+ null, null/*writeCfgTxn*/);
} else {
String rd = nextHop.getVrfId();
List<String> nhList;
+ " interface {}", nextHop.getIpAddress(), rd,
nextHop.getAdjacencyType().toString(), interfaceName);
bgpManager.withdrawPrefixIfPresent(rd, nextHop.getIpAddress());
- fibManager.removeFibEntry(primaryRd, nextHop.getIpAddress(), writeConfigTxn);
+ fibManager.removeFibEntry(primaryRd, nextHop.getIpAddress(), null, writeConfigTxn);
}
}
String ip = nextHop.getIpAddress().split("/")[0];
LOG.debug("update: remove prefix {} from the FIB and BGP entry "
+ "for the Vpn-Rd {} ", adj.getIpAddress(), vpnRd);
//remove BGP entry
- fibManager.removeFibEntry(vpnRd, adj.getIpAddress(), confTx);
+ fibManager.removeFibEntry(vpnRd, adj.getIpAddress(), null, confTx);
if (vpnRd != null && !vpnRd.equalsIgnoreCase(newVpnName)) {
bgpManager.withdrawPrefix(vpnRd, adj.getIpAddress());
}
LOG.info("delAdjFromVpnInterface: deleting PNF adjacency prefix {} subnet {}",
adj.getIpAddress(), adj.getSubnetId());
fibManager.removeFibEntry(adj.getSubnetId().getValue(), adj.getIpAddress(),
- writeConfigTxn);
+ null, writeConfigTxn);
}
break;
}
if (adj.getAdjacencyType() == AdjacencyType.PrimaryAdjacency) {
String primaryInterfaceIp = adj.getIpAddress();
String prefix = VpnUtil.getIpPrefix(primaryInterfaceIp);
- fibManager.removeFibEntry(rd, prefix, writeConfigTxn);
+ fibManager.removeFibEntry(rd, prefix, null, writeConfigTxn);
LOG.info("deleteFibEntryForRouterInterface: FIB for router interface {} deleted for vpn {} rd {}"
+ " prefix {}", vpnInterface.getName(), vpnName, rd, prefix);
}
public class VpnSubnetRouteHandler {
private static final Logger LOG = LoggerFactory.getLogger(VpnSubnetRouteHandler.class);
private static final String LOGGING_PREFIX = "SUBNETROUTE:";
+ private static final String VPN_EVENT_SOURCE_SUBNET_ROUTE = "vpnSubnetRouteEvent";
private final DataBroker dataBroker;
private final SubnetOpDpnManager subOpDpnManager;
private final IBgpManager bgpManager;
}
public void deleteSubnetRouteFibEntryFromDS(String rd, String prefix, String vpnName) {
- fibManager.removeFibEntry(rd, prefix, null);
+ fibManager.removeFibEntry(rd, prefix, VPN_EVENT_SOURCE_SUBNET_ROUTE, null);
List<VpnInstanceOpDataEntry> vpnsToImportRoute = vpnUtil.getVpnsImportingMyRoute(vpnName);
for (VpnInstanceOpDataEntry vpnInstance : vpnsToImportRoute) {
String importingRd = vpnInstance.getVrfId();
- fibManager.removeFibEntry(importingRd, prefix, null);
+ fibManager.removeFibEntry(importingRd, prefix, VPN_EVENT_SOURCE_SUBNET_ROUTE, null);
LOG.info("SUBNETROUTE: deleteSubnetRouteFibEntryFromDS: Deleted imported subnet route rd {} prefix {}"
+ " from vpn {} importingRd {}", rd, prefix, vpnInstance.getVpnInstanceName(), importingRd);
}
}
} else {
LOG.debug("Removing leaked route to {} from VPN {}", prefix, dstVpnName);
- fibManager.removeFibEntry(dstVpnRd, prefix, null /*writeConfigTxn*/);
+ fibManager.removeFibEntry(dstVpnRd, prefix, null, null /*writeConfigTxn*/);
bgpManager.withdrawPrefix(dstVpnRd, prefix);
}
}