diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index d96224d..589c073 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -2616,7 +2616,7 @@
 
 static void
 bgp_soft_reconfig_table_rsclient (struct peer *rsclient, afi_t afi,
-        safi_t safi, struct bgp_table *table)
+        safi_t safi, struct bgp_table *table, struct prefix_rd *prd)
 {
   struct bgp_node *rn;
   struct bgp_adj_in *ain;
@@ -2627,8 +2627,11 @@
   for (rn = bgp_table_top (table); rn; rn = bgp_route_next (rn))
     for (ain = rn->adj_in; ain; ain = ain->next)
       {
+        struct bgp_info *ri = rn->info;
+
         bgp_update_rsclient (rsclient, afi, safi, ain->attr, ain->peer,
-                &rn->p, ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL, NULL, NULL);
+                &rn->p, ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL, prd,
+                (bgp_info_extra_get (ri))->tag);
       }
 }
 
@@ -2639,18 +2642,25 @@
   struct bgp_node *rn;
   
   if (safi != SAFI_MPLS_VPN)
-    bgp_soft_reconfig_table_rsclient (rsclient, afi, safi, NULL);
+    bgp_soft_reconfig_table_rsclient (rsclient, afi, safi, NULL, NULL);
 
   else
     for (rn = bgp_table_top (rsclient->bgp->rib[afi][safi]); rn;
             rn = bgp_route_next (rn))
       if ((table = rn->info) != NULL)
-        bgp_soft_reconfig_table_rsclient (rsclient, afi, safi, table);
+        {
+          struct prefix_rd prd;
+          prd.family = AF_UNSPEC;
+          prd.prefixlen = 64;
+          memcpy(&prd.val, rn->p.u.val, 8);
+
+          bgp_soft_reconfig_table_rsclient (rsclient, afi, safi, table, &prd);
+        }
 }
 
 static void
 bgp_soft_reconfig_table (struct peer *peer, afi_t afi, safi_t safi,
-			 struct bgp_table *table)
+			 struct bgp_table *table, struct prefix_rd *prd)
 {
   int ret;
   struct bgp_node *rn;
@@ -2664,9 +2674,12 @@
       {
 	if (ain->peer == peer)
 	  {
+	    struct bgp_info *ri = rn->info;
+
 	    ret = bgp_update (peer, &rn->p, ain->attr, afi, safi,
 			      ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL,
-			      NULL, NULL, 1);
+			      prd, (bgp_info_extra_get (ri))->tag, 1);
+
 	    if (ret < 0)
 	      {
 		bgp_unlock_node (rn);
@@ -2687,12 +2700,19 @@
     return;
 
   if (safi != SAFI_MPLS_VPN)
-    bgp_soft_reconfig_table (peer, afi, safi, NULL);
+    bgp_soft_reconfig_table (peer, afi, safi, NULL, NULL);
   else
     for (rn = bgp_table_top (peer->bgp->rib[afi][safi]); rn;
 	 rn = bgp_route_next (rn))
       if ((table = rn->info) != NULL)
-	bgp_soft_reconfig_table (peer, afi, safi, table);
+        {
+          struct prefix_rd prd;
+          prd.family = AF_UNSPEC;
+          prd.prefixlen = 64;
+          memcpy(&prd.val, rn->p.u.val, 8);
+
+          bgp_soft_reconfig_table (peer, afi, safi, table, &prd);
+        }
 }
 
 
