diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index a55d358..e57d1af 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -2147,6 +2147,10 @@
 
   if (rib)
     {
+      /* if tag value changed , update old value in RIB */
+      if (rib->tag != si->tag)
+	rib->tag = si->tag;
+
       /* Same distance static route is there.  Update it with new
          nexthop. */
       route_unlock_node (rn);
@@ -2184,6 +2188,7 @@
       rib->vrf_id = si->vrf_id;
       rib->table = zebrad.rtm_table_default;
       rib->nexthop_num = 0;
+      rib->tag = si->tag;
 
       switch (si->type)
         {
@@ -2269,7 +2274,8 @@
       if (CHECK_FLAG (rib->status, RIB_ENTRY_REMOVED))
         continue;
 
-      if (rib->type == ZEBRA_ROUTE_STATIC && rib->distance == si->distance)
+      if (rib->type == ZEBRA_ROUTE_STATIC && rib->distance == si->distance &&
+	  rib->tag == si->tag)
         break;
     }
 
@@ -2308,7 +2314,7 @@
 
 int
 static_add_ipv4_safi (safi_t safi, struct prefix *p, struct in_addr *gate,
-		      const char *ifname, u_char flags, u_char distance,
+		      const char *ifname, u_char flags, u_short tag, u_char distance,
 		      vrf_id_t vrf_id)
 {
   u_char type = 0;
@@ -2341,7 +2347,8 @@
 	  && (! gate || IPV4_ADDR_SAME (gate, &si->addr.ipv4))
 	  && (! ifname || strcmp (ifname, si->ifname) == 0))
 	{
-	  if (distance == si->distance)
+	  if (distance == si->distance &&
+	      tag == si->tag)
 	    {
 	      route_unlock_node (rn);
 	      return 0;
@@ -2351,15 +2358,16 @@
 	}
     }
 
-  /* Distance changed.  */
+  /* Distance or tag changed. */
   if (update)
-    static_delete_ipv4_safi (safi, p, gate, ifname, update->distance, vrf_id);
+    static_delete_ipv4_safi (safi, p, gate, ifname, update->tag, update->distance, vrf_id);
 
   /* Make new static route structure. */
   si = XCALLOC (MTYPE_STATIC_ROUTE, sizeof (struct static_route));
 
   si->type = type;
   si->distance = distance;
+  si->tag = tag;
   si->flags = flags;
   si->vrf_id = vrf_id;
 
@@ -2403,7 +2411,7 @@
 
 int
 static_delete_ipv4_safi (safi_t safi, struct prefix *p, struct in_addr *gate,
-			 const char *ifname, u_char distance, vrf_id_t vrf_id)
+			 const char *ifname, u_short tag, u_char distance, vrf_id_t vrf_id)
 {
   u_char type = 0;
   struct route_node *rn;
@@ -2432,7 +2440,8 @@
   for (si = rn->info; si; si = si->next)
     if (type == si->type
 	&& (! gate || IPV4_ADDR_SAME (gate, &si->addr.ipv4))
-	&& (! ifname || strcmp (ifname, si->ifname) == 0))
+	&& (! ifname || strcmp (ifname, si->ifname) == 0)
+	&& (! tag || (tag == si->tag)))
       break;
 
   /* Can't find static route. */
@@ -2788,8 +2797,8 @@
 /* Add static route into static route configuration. */
 int
 static_add_ipv6 (struct prefix *p, u_char type, struct in6_addr *gate,
-		 const char *ifname, u_char flags, u_char distance,
-		 vrf_id_t vrf_id)
+		 const char *ifname, u_char flags, u_short tag,
+		 u_char distance, vrf_id_t vrf_id)
 {
   struct route_node *rn;
   struct static_route *si;
@@ -2817,6 +2826,7 @@
   for (si = rn->info; si; si = si->next)
     {
       if (type == si->type
+	  && tag == si->tag
 	  && (! gate || IPV6_ADDR_SAME (gate, &si->addr.ipv6))
 	  && (! ifname || strcmp (ifname, si->ifname) == 0))
 	{
@@ -2831,13 +2841,14 @@
     }
 
   if (update)
-    static_delete_ipv6(p, type, gate, ifname, si->distance, vrf_id);
+    static_delete_ipv6(p, type, gate, ifname, tag, si->distance, vrf_id);
 
   /* Make new static route structure. */
   si = XCALLOC (MTYPE_STATIC_ROUTE, sizeof (struct static_route));
 
   si->type = type;
   si->distance = distance;
+  si->tag = tag;
   si->flags = flags;
   si->vrf_id = vrf_id;
 
@@ -2884,7 +2895,7 @@
 /* Delete static route from static route configuration. */
 int
 static_delete_ipv6 (struct prefix *p, u_char type, struct in6_addr *gate,
-		    const char *ifname, u_char distance, vrf_id_t vrf_id)
+		    const char *ifname, u_short tag, u_char distance, vrf_id_t vrf_id)
 {
   struct route_node *rn;
   struct static_route *si;
@@ -2905,7 +2916,8 @@
     if (distance == si->distance 
 	&& type == si->type
 	&& (! gate || IPV6_ADDR_SAME (gate, &si->addr.ipv6))
-	&& (! ifname || strcmp (ifname, si->ifname) == 0))
+	&& (! ifname || strcmp (ifname, si->ifname) == 0)
+	&& (! tag || (tag == si->tag)))
       break;
 
   /* Can't find static route. */
