X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=vpnservice.git;a=blobdiff_plain;f=fibmanager%2Ffibmanager-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Ffibmanager%2FFibManager.java;h=128444c65991b8f57dbcb88593d7c75afda3587e;hp=471336805194fd0edf9948466b224bef31cc1c92;hb=f30638fcc162d85f21f33cef401b4fb5da05caaf;hpb=07987768599bbad2f95da0412c7e5b0eebac07af diff --git a/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java b/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java index 47133680..128444c6 100644 --- a/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java +++ b/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java @@ -281,7 +281,7 @@ public class FibManager extends AbstractDataChangeListener implements //Is this fib route an extra route? If yes, get the nexthop which would be an adjacency in the vpn Extraroute extra_route = getVpnToExtraroute(rd, vrfEntry.getDestPrefix()); if (extra_route != null) { - localNextHopInfo = nextHopManager.getVpnNexthop(vpnId, extra_route.getNexthopIp()); + localNextHopInfo = nextHopManager.getVpnNexthop(vpnId, extra_route.getNexthopIp() + "/32"); localNextHopIP = extra_route.getNexthopIp() + "/32"; isExtraRoute = true; } @@ -444,13 +444,19 @@ public class FibManager extends AbstractDataChangeListener implements - vpn interface op DS */ Prefixes prefixInfo = getPrefixToInterface(vpnId, vrfEntry.getDestPrefix()); - boolean extra_route = false; + Extraroute extraRoute = null; if (prefixInfo == null) { - prefixInfo = getPrefixToInterface(vpnId, vrfEntry.getNextHopAddress() + "/32"); - extra_route = true; + extraRoute = getVpnToExtraroute(rd, vrfEntry.getDestPrefix()); + if(extraRoute != null) { + prefixInfo = getPrefixToInterface(vpnId, extraRoute.getNexthopIp() + "/32"); + //clean up the vpn to extra route entry in DS + FibUtil.delete(broker, LogicalDatastoreType.OPERATIONAL, FibUtil.getVpnToExtrarouteIdentifier(rd, vrfEntry.getDestPrefix())); + } } - if (prefixInfo == null) + if (prefixInfo == null) { + LOG.debug("Cleanup VPN Data Failed as unable to find prefix Info for " + vrfEntry.getDestPrefix()); return; //Don't have any info for this prefix (shouldn't happen); need to return + } String ifName = prefixInfo.getVpnInterfaceName(); Optional optAdjacencies = FibUtil.read(broker, LogicalDatastoreType.OPERATIONAL, FibUtil.getAdjListPath(ifName)); int numAdj = 0; @@ -728,8 +734,8 @@ public class FibManager extends AbstractDataChangeListener implements adjacency = nextHopManager.getRemoteNextHopPointer(localDpnId, remoteDpnId, vpnId, - vrfEntry.getDestPrefix(), - (staticRoute == true) ? extra_route.getNexthopIp() : vrfEntry.getNextHopAddress()); + (staticRoute == true) ? extra_route.getNexthopIp() + "/32" : vrfEntry.getDestPrefix(), + vrfEntry.getNextHopAddress()); } catch (NullPointerException e) { LOG.trace("", e); }