]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: fix updating redist bitmask when vrf_id changes 1620/head
authorDon Slice <dslice@cumulusnetworks.com>
Wed, 10 Jan 2018 19:40:45 +0000 (19:40 +0000)
committerDon Slice <dslice@cumulusnetworks.com>
Wed, 10 Jan 2018 19:54:21 +0000 (19:54 +0000)
Problem reported that when "systemctl restart networking" was
performed, prefixes previously redistributed into bgp from connected
were deleted from the bgp table.  Determined that we were not correctly
changing the redistribution bitmask when the vrf_id of the vrf was
changed. This patch corrects that behavior.

Manual tests look good. bgp-min and vrf-min completed with no new failures.

Ticket: CM-19369
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
bgpd/bgp_zebra.c

index 1cf04abfce69a32c7a9682133cdaaf5784aa9548..b2db54ef797a5c40921afb7d828ccea038f3b027 100644 (file)
@@ -1516,8 +1516,9 @@ void bgp_update_redist_vrf_bitmaps(struct bgp *bgp, vrf_id_t old_vrf_id)
 
        for (afi = AFI_IP; afi < AFI_MAX; afi++)
                for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
-                       if (vrf_bitmap_check(zclient->redist[afi][i],
-                                            old_vrf_id)) {
+                       if ((old_vrf_id == VRF_UNKNOWN)
+                           || vrf_bitmap_check(zclient->redist[afi][i],
+                                               old_vrf_id)) {
                                vrf_bitmap_unset(zclient->redist[afi][i],
                                                 old_vrf_id);
                                vrf_bitmap_set(zclient->redist[afi][i],