Merge "Clean up subnet routes when vpn is out of a dpn."
[vpnservice.git] / 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);