3 @@ -2616,7 +2616,7 @@ bgp_announce_route_all (struct peer *pee
6 bgp_soft_reconfig_table_rsclient (struct peer *rsclient, afi_t afi,
7 - safi_t safi, struct bgp_table *table)
8 + safi_t safi, struct bgp_table *table, struct prefix_rd *prd)
11 struct bgp_adj_in *ain;
12 @@ -2627,8 +2627,11 @@ bgp_soft_reconfig_table_rsclient (struct
13 for (rn = bgp_table_top (table); rn; rn = bgp_route_next (rn))
14 for (ain = rn->adj_in; ain; ain = ain->next)
16 + struct bgp_info *ri = rn->info;
18 bgp_update_rsclient (rsclient, afi, safi, ain->attr, ain->peer,
19 - &rn->p, ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL, NULL, NULL);
20 + &rn->p, ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL, prd,
21 + (bgp_info_extra_get (ri))->tag);
25 @@ -2639,18 +2642,25 @@ bgp_soft_reconfig_rsclient (struct peer
28 if (safi != SAFI_MPLS_VPN)
29 - bgp_soft_reconfig_table_rsclient (rsclient, afi, safi, NULL);
30 + bgp_soft_reconfig_table_rsclient (rsclient, afi, safi, NULL, NULL);
33 for (rn = bgp_table_top (rsclient->bgp->rib[afi][safi]); rn;
34 rn = bgp_route_next (rn))
35 if ((table = rn->info) != NULL)
36 - bgp_soft_reconfig_table_rsclient (rsclient, afi, safi, table);
38 + struct prefix_rd prd;
39 + prd.family = AF_UNSPEC;
41 + memcpy(&prd.val, rn->p.u.val, 8);
43 + bgp_soft_reconfig_table_rsclient (rsclient, afi, safi, table, &prd);
48 bgp_soft_reconfig_table (struct peer *peer, afi_t afi, safi_t safi,
49 - struct bgp_table *table)
50 + struct bgp_table *table, struct prefix_rd *prd)
54 @@ -2664,9 +2674,12 @@ bgp_soft_reconfig_table (struct peer *pe
56 if (ain->peer == peer)
58 + struct bgp_info *ri = rn->info;
60 ret = bgp_update (peer, &rn->p, ain->attr, afi, safi,
61 ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL,
63 + prd, (bgp_info_extra_get (ri))->tag, 1);
68 @@ -2687,12 +2700,19 @@ bgp_soft_reconfig_in (struct peer *peer,
71 if (safi != SAFI_MPLS_VPN)
72 - bgp_soft_reconfig_table (peer, afi, safi, NULL);
73 + bgp_soft_reconfig_table (peer, afi, safi, NULL, NULL);
75 for (rn = bgp_table_top (peer->bgp->rib[afi][safi]); rn;
76 rn = bgp_route_next (rn))
77 if ((table = rn->info) != NULL)
78 - bgp_soft_reconfig_table (peer, afi, safi, table);
80 + struct prefix_rd prd;
81 + prd.family = AF_UNSPEC;
83 + memcpy(&prd.val, rn->p.u.val, 8);
85 + bgp_soft_reconfig_table (peer, afi, safi, table, &prd);