Fix to advertise VRF routes from DC-GW 46/73646/3
authoreswanit <swati.udhavrao.niture@ericsson.com>
Mon, 11 Jun 2018 05:27:48 +0000 (10:57 +0530)
committerSam Hague <shague@redhat.com>
Tue, 3 Jul 2018 17:52:00 +0000 (17:52 +0000)
VRF routes from DC-GW is not advertised
to ODL primary RDs

Previously, when some routes are advertised from DC-GW
to quagga. since it was imported by a wrong RD which is
not primary, destination prefix (advertised by DC-GW)
in vrf-entry of fib was under wrong RD.

This is fixed now by checking if RD equals primary RD
(while advertising routes to quagga bgp), then send
an import RTs list, otherwise send an empty list.

Change-Id: I268e5da85df2c1115ef1549b1ff97514d31b4f58
Signed-off-by: eswanit <swati.udhavrao.niture@ericsson.com>
vpnmanager/impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnOpStatusListener.java

index 291c4516f5d4aba7f837beea6adde4f9300855e2..509984056e214da8b91c005b90ecd615d9cbe387 100644 (file)
@@ -238,18 +238,17 @@ public class VpnOpStatusListener extends AsyncDataTreeChangeListenerBase<VpnInst
                         LOG.info("VpnOpStatusListener.update: updating BGPVPN for vpn {} with RD {}"
                                 + " Type is {}, IPv4 is {}, IPv6 is {}", vpnName, primaryRd, update.getType(),
                                 update.isIpv4Configured(), update.isIpv6Configured());
+                        List<String> importRTList = rd.equals(primaryRd) ? irtList : Collections.emptyList();
                         if (update.getType() == VpnInstanceOpDataEntry.Type.L2) {
-                            bgpManager.addVrf(rd, irtList, ertList, AddressFamily.L2VPN);
-                        } else {
-                            bgpManager.deleteVrf(rd, false, AddressFamily.L2VPN);
+                            bgpManager.addVrf(rd, importRTList, ertList, AddressFamily.L2VPN);
                         }
                         if (!original.isIpv4Configured() && update.isIpv4Configured()) {
-                            bgpManager.addVrf(rd, irtList, ertList, AddressFamily.IPV4);
+                            bgpManager.addVrf(rd, importRTList, ertList, AddressFamily.IPV4);
                         } else if (original.isIpv4Configured() && !update.isIpv4Configured()) {
                             bgpManager.deleteVrf(rd, false, AddressFamily.IPV4);
                         }
                         if (!original.isIpv6Configured() && update.isIpv6Configured()) {
-                            bgpManager.addVrf(rd, irtList, ertList, AddressFamily.IPV6);
+                            bgpManager.addVrf(rd, importRTList, ertList, AddressFamily.IPV6);
                         } else if (original.isIpv6Configured() && !update.isIpv6Configured()) {
                             bgpManager.deleteVrf(rd, false, AddressFamily.IPV6);
                         }