List<String> externalIps = NatUtil.getExternalIpsForRouter(dataBroker,routerId);
handleDisableSnat(original, networkUuid, externalIps, false, null, dpnId);
} else {
+ // Allocate Primary Napt Switch for existing router
+ BigInteger primarySwitchId = getPrimaryNaptSwitch(routerName, routerId);
+ if(primarySwitchId == null || primarySwitchId.equals(BigInteger.ZERO)){
+ LOG.error("NAT Service: Failed to get or allocated NAPT switch in ExternalRouterListener.Update()");
+ return;
+ }
LOG.info("NAT Service : SNAT enabled for Router {}", original.getRouterName());
- handleEnableSnat(original, routerId, dpnId);
+ handleEnableSnat(original, routerId, primarySwitchId);
}
}
void onRemoveFloatingIp(BigInteger dpnId, String routerId, Uuid networkId, InternalToExternalPortMap mapping,
long label);
+ void cleanupFibEntries(final BigInteger dpnId, final String vpnName, final String externalIp, final long label);
}
LOG.error("NAT Service : Could not retrieve label for prefix {} in router {}", internalIp, routerId);
return;
}
- ((VpnFloatingIpHandler) floatingIPHandler).cleanupFibEntries(dpnId, vpnName, externalIp, label);
+ floatingIPHandler.cleanupFibEntries(dpnId, vpnName, externalIp, label);
removeOperationalDS(routerName, interfaceName, internalIp, externalIp);
}
cleanupFibEntries(dpnId, vpnName, externalIp, label);
}
- void cleanupFibEntries(final BigInteger dpnId, final String vpnName, final String externalIp, final long label ) {
+ public void cleanupFibEntries(final BigInteger dpnId, final String vpnName, final String externalIp, final long label ) {
//Remove Prefix from BGP
String rd = NatUtil.getVpnRd(dataBroker, vpnName);
NatUtil.removePrefixFromBGP(dataBroker, bgpManager, fibManager, rd, externalIp + "/32", LOG);