return CMD_SUCCESS;
}
-/* Update redistribute vrf bitmap during triggers like
- restart networking or delete/add VRFs */
-void bgp_update_redist_vrf_bitmaps(struct bgp *bgp, vrf_id_t old_vrf_id)
+void bgp_redistribute_redo(struct bgp *bgp)
+{
+ afi_t afi;
+ int i;
+ struct list *red_list;
+ struct listnode *node;
+ struct bgp_redist *red;
+
+ for (afi = AFI_IP; afi < AFI_MAX; afi++) {
+ for (i = 0; i < ZEBRA_ROUTE_MAX; i++) {
+
+ red_list = bgp->redist[afi][i];
+ if (!red_list)
+ continue;
+
+ for (ALL_LIST_ELEMENTS_RO(red_list, node, red)) {
+ bgp_redistribute_resend(bgp, afi, i,
+ red->instance);
+ }
+ }
+ }
+}
+
+/* Unset redistribute vrf bitmap during triggers like
+ restart networking or delete VRFs */
+void bgp_unset_redist_vrf_bitmaps(struct bgp *bgp, vrf_id_t old_vrf_id)
{
int i;
afi_t afi;
for (afi = AFI_IP; afi < AFI_MAX; afi++)
for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
- if ((old_vrf_id == VRF_UNKNOWN)
- || vrf_bitmap_check(zclient->redist[afi][i],
- old_vrf_id)) {
+ if (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],
- bgp->vrf_id);
- }
return;
}