Clean up subnet routes when vpn is out of a dpn. 43/37643/1
authorSuraj Ranjan <suraj.ranjan@ericsson.com>
Fri, 15 Apr 2016 07:22:30 +0000 (12:52 +0530)
committerSuraj Ranjan <suraj.ranjan@ericsson.com>
Fri, 15 Apr 2016 07:23:08 +0000 (12:53 +0530)
Fix to clean up subnet route flows on a dpn for a vpn
when the vpn is removed from that dpn.

Change-Id: I8fe43b3c80493f72fc08a1801d2a6cb81260f79a
Signed-off-by: Suraj Ranjan <suraj.ranjan@ericsson.com>
Co-Authored-By: Vivekanandan Narasimhan <n.vivekanandan@ericsson.com>
fibmanager/fibmanager-impl/src/main/java/org/opendaylight/vpnservice/fibmanager/FibManager.java

index b9906ada2455bb32e8062d80fd2088bb09802d9f..57a336e70a820c43d765cf5e01f9c40d18a2b755 100644 (file)
@@ -778,6 +778,17 @@ public class FibManager extends AbstractDataChangeListener<VrfEntry> implements
       Optional<VrfTables> vrfTable = FibUtil.read(broker, LogicalDatastoreType.CONFIGURATION, id);
       if (vrfTable.isPresent()) {
         for (VrfEntry vrfEntry : vrfTable.get().getVrfEntry()) {
+                        /* Handle subnet routes here */
+            RdToElanOpEntry rdToElanOpEntry= getRdToElanOpEntry(broker, rd,
+                    vrfEntry.getDestPrefix());
+            if (rdToElanOpEntry != null) {
+                LOG.trace("Cleaning subnetroute {} on dpn {} for vpn {} : cleanUpDpnForVpn", vrfEntry.getDestPrefix(),
+                        dpnId, rd);
+                makeConnectedRoute(dpnId, vpnId, vrfEntry, rd, null, NwConstants.DEL_FLOW);
+                makeLFibTableEntry(dpnId, vrfEntry.getLabel(), null,
+                        vrfEntry.getNextHopAddress(),NwConstants.DEL_FLOW);
+                continue;
+            }
           // Passing null as we don't know the dpn
           // to which prefix is attached at this point
           deleteRemoteRoute(null, dpnId, vpnId, vrfTable.get().getKey(), vrfEntry);