]> git.proxmox.com Git - mirror_frr.git/commitdiff
zebra: make ZEBRA_FLAG_CHANGED internal status
authorTimo Teräs <timo.teras@iki.fi>
Mon, 2 Nov 2015 14:50:05 +0000 (16:50 +0200)
committerDonald Sharp <sharpd@cumulusnetwroks.com>
Fri, 19 Aug 2016 20:30:47 +0000 (16:30 -0400)
This flag is used internally in zebra only. And it makes no sense
to expose it over the zclient API, as having it set from client
could corrupt the internal state.

Signed-off-by: Timo Teräs <timo.teras@iki.fi>
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
(cherry picked from commit 7eb6136b2732d4782360f9f376336c6d4f667ff0)

lib/zebra.h
zebra/rib.h
zebra/zebra_rib.c
zebra/zebra_rnh.c

index b3a814c0d2b69f45ac0c9146f98e604cf735a43c..e117e26bf6fac547bec99ad97de997a14db5f2b4 100644 (file)
@@ -489,7 +489,6 @@ extern const char *zserv_command_string (unsigned int command);
 #define ZEBRA_FLAG_BLACKHOLE          0x04
 #define ZEBRA_FLAG_IBGP               0x08
 #define ZEBRA_FLAG_SELECTED           0x10
-#define ZEBRA_FLAG_CHANGED            0x20
 #define ZEBRA_FLAG_STATIC             0x40
 #define ZEBRA_FLAG_REJECT             0x80
 #define ZEBRA_FLAG_SCOPE_LINK         0x100
index 291ee0b714ad328302c6ec2ad6960de3a73874aa..a2109d8c1794245190f9cc6898f60f48cd3412f4 100644 (file)
@@ -81,6 +81,7 @@ struct rib
 #define RIB_ENTRY_REMOVED         0x1
   /* to simplify NHT logic when NHs change, instead of doing a NH by NH cmp */
 #define RIB_ENTRY_NEXTHOPS_CHANGED 0x2
+#define RIB_ENTRY_CHANGED          0x4
 
   /* Nexthop information. */
   u_char nexthop_num;
index 16f43f7312ad908ad926acc50ee735120f1eb178..c1bceee9e6f6f04a704d181a7ed3b143c1a6a0b2 100644 (file)
@@ -1188,7 +1188,7 @@ nexthop_active_check (struct route_node *rn, struct rib *rib,
 /* Iterate over all nexthops of the given RIB entry and refresh their
  * ACTIVE flag. rib->nexthop_active_num is updated accordingly. If any
  * nexthop is found to toggle the ACTIVE flag, the whole rib structure
- * is flagged with ZEBRA_FLAG_CHANGED. The 4th 'set' argument is
+ * is flagged with RIB_ENTRY_CHANGED. The 4th 'set' argument is
  * transparently passed to nexthop_active_check().
  *
  * Return value is the new number of active nexthops.
@@ -1204,7 +1204,7 @@ nexthop_active_update (struct route_node *rn, struct rib *rib, int set)
   old_num_nh = rib->nexthop_active_num;
 
   rib->nexthop_active_num = 0;
-  UNSET_FLAG (rib->flags, ZEBRA_FLAG_CHANGED);
+  UNSET_FLAG (rib->status, RIB_ENTRY_CHANGED);
 
   for (nexthop = rib->nexthop; nexthop; nexthop = nexthop->next)
   {
@@ -1224,15 +1224,15 @@ nexthop_active_update (struct route_node *rn, struct rib *rib, int set)
          nexthop->type < NEXTHOP_TYPE_BLACKHOLE) &&
         !(IPV6_ADDR_SAME (&prev_src.ipv6, &nexthop->rmap_src.ipv6))))
       {
-       SET_FLAG (rib->flags, ZEBRA_FLAG_CHANGED);
+       SET_FLAG (rib->flags, RIB_ENTRY_CHANGED);
        SET_FLAG (rib->status, RIB_ENTRY_NEXTHOPS_CHANGED);
       }
   }
 
   if (old_num_nh != rib->nexthop_active_num)
-    SET_FLAG (rib->flags, ZEBRA_FLAG_CHANGED);
+    SET_FLAG (rib->flags, RIB_ENTRY_CHANGED);
 
-  if (CHECK_FLAG (rib->flags, ZEBRA_FLAG_CHANGED))
+  if (CHECK_FLAG (rib->flags, RIB_ENTRY_CHANGED))
     {
       SET_FLAG (rib->status, RIB_ENTRY_NEXTHOPS_CHANGED);
     }
@@ -1429,7 +1429,7 @@ rib_process_add_route (struct zebra_vrf *zvrf, struct route_node *rn,
   /* Update real nexthop. This may actually determine if nexthop is active or not. */
   if (!nexthop_active_update (rn, select, 1))
     {
-      UNSET_FLAG(select->flags, ZEBRA_FLAG_CHANGED);
+      UNSET_FLAG(select->flags, RIB_ENTRY_CHANGED);
       return;
     }
 
@@ -1455,7 +1455,7 @@ rib_process_add_route (struct zebra_vrf *zvrf, struct route_node *rn,
   /* Update for redistribution. */
   if (installed)
     redistribute_update (&rn->p, select, NULL);
-  UNSET_FLAG(select->flags, ZEBRA_FLAG_CHANGED);
+  UNSET_FLAG(select->flags, RIB_ENTRY_CHANGED);
 }
 
 static void
@@ -1482,7 +1482,7 @@ rib_process_del_route (struct zebra_vrf *zvrf, struct route_node *rn,
 
   /* Update nexthop for route, reset changed flag. */
   nexthop_active_update (rn, fib, 1);
-  UNSET_FLAG(fib->flags, ZEBRA_FLAG_CHANGED);
+  UNSET_FLAG(fib->flags, RIB_ENTRY_CHANGED);
 }
 
 static void
@@ -1503,7 +1503,7 @@ rib_process_update_route (struct zebra_vrf *zvrf, struct route_node *rn,
    * something has changed.
    */
   if (select != fib ||
-      CHECK_FLAG (select->flags, ZEBRA_FLAG_CHANGED))
+      CHECK_FLAG (select->flags, RIB_ENTRY_CHANGED))
     {
       zfpm_trigger_update (rn, "updating existing route");
 
@@ -1623,11 +1623,11 @@ rib_process_update_route (struct zebra_vrf *zvrf, struct route_node *rn,
 
       /* Set real nexthop. */
       nexthop_active_update (rn, fib, 1);
-      UNSET_FLAG(fib->flags, ZEBRA_FLAG_CHANGED);
+      UNSET_FLAG(fib->flags, RIB_ENTRY_CHANGED);
     }
 
   /* Clear changed flag. */
-  UNSET_FLAG(select->flags, ZEBRA_FLAG_CHANGED);
+  UNSET_FLAG(select->flags, RIB_ENTRY_CHANGED);
 }
 
 /* Core function for processing routing information base. */
@@ -1707,7 +1707,7 @@ rib_process (struct route_node *rn)
        * the nexthop_active_update() code. Thus, we might miss changes to
        * recursive NHs.
        */
-      if (!CHECK_FLAG(rib->flags, ZEBRA_FLAG_CHANGED) &&
+      if (!CHECK_FLAG(rib->flags, RIB_ENTRY_CHANGED) &&
           ! nexthop_active_update (rn, rib, 0))
         {
           if (rib->type == ZEBRA_ROUTE_TABLE)
@@ -1735,7 +1735,7 @@ rib_process (struct route_node *rn)
       /* Infinite distance. */
       if (rib->distance == DISTANCE_INFINITY)
         {
-          UNSET_FLAG (rib->flags, ZEBRA_FLAG_CHANGED);
+          UNSET_FLAG (rib->flags, RIB_ENTRY_CHANGED);
           continue;
         }
 
@@ -1761,30 +1761,30 @@ rib_process (struct route_node *rn)
           if (select->type != ZEBRA_ROUTE_CONNECT
               || rib->metric <= select->metric)
             {
-              UNSET_FLAG (select->flags, ZEBRA_FLAG_CHANGED);
+              UNSET_FLAG (select->flags, RIB_ENTRY_CHANGED);
               select = rib;
             }
           else
-            UNSET_FLAG (rib->flags, ZEBRA_FLAG_CHANGED);
+            UNSET_FLAG (rib->flags, RIB_ENTRY_CHANGED);
           continue;
         }
       else if (select->type == ZEBRA_ROUTE_CONNECT)
         {
-          UNSET_FLAG (rib->flags, ZEBRA_FLAG_CHANGED);
+          UNSET_FLAG (rib->flags, RIB_ENTRY_CHANGED);
           continue;
         }
       
       /* higher distance loses */
       if (rib->distance > select->distance)
         {
-          UNSET_FLAG (rib->flags, ZEBRA_FLAG_CHANGED);
+          UNSET_FLAG (rib->flags, RIB_ENTRY_CHANGED);
           continue;
         }
       
       /* lower wins */
       if (rib->distance < select->distance)
         {
-          UNSET_FLAG (select->flags, ZEBRA_FLAG_CHANGED);
+          UNSET_FLAG (select->flags, RIB_ENTRY_CHANGED);
           select = rib;
           continue;
         }
@@ -1792,7 +1792,7 @@ rib_process (struct route_node *rn)
       /* metric tie-breaks equal distance */
       if (rib->metric <= select->metric)
         {
-          UNSET_FLAG (select->flags, ZEBRA_FLAG_CHANGED);
+          UNSET_FLAG (select->flags, RIB_ENTRY_CHANGED);
           select = rib;
         }
     } /* RNODE_FOREACH_RIB_SAFE */
@@ -1823,7 +1823,7 @@ rib_process (struct route_node *rn)
       if (IS_ZEBRA_DEBUG_RIB)
        rnode_debug (rn, vrf_id, "Updating existing route, select %p, fib %p",
                      (void *)select, (void *)fib);
-      if (CHECK_FLAG (select->flags, ZEBRA_FLAG_CHANGED))
+      if (CHECK_FLAG (select->status, RIB_ENTRY_CHANGED))
         {
           if (info->safi == SAFI_UNICAST)
            zfpm_trigger_update (rn, "updating existing route");
@@ -1865,7 +1865,7 @@ rib_process (struct route_node *rn)
                 rib_uninstall_kernel (rn, select);
              UNSET_FLAG (select->flags, ZEBRA_FLAG_SELECTED);
            }
-         UNSET_FLAG (select->flags, ZEBRA_FLAG_CHANGED);
+         UNSET_FLAG (select->flags, RIB_ENTRY_CHANGED);
        }
       else if (! RIB_SYSTEM_ROUTE (select))
         {
@@ -1918,7 +1918,7 @@ rib_process (struct route_node *rn)
 
       /* Set real nexthop. */
       nexthop_active_update (rn, fib, 1);
-      UNSET_FLAG(fib->flags, ZEBRA_FLAG_CHANGED);
+      UNSET_FLAG(fib->flags, RIB_ENTRY_CHANGED);
     }
 
   /* Regardless of some RIB entry being SELECTED or not before, now we can
@@ -1988,7 +1988,7 @@ rib_process (struct route_node *rn)
               redistribute_delete(&rn->p, fib);
            }
        }
-      UNSET_FLAG(select->flags, ZEBRA_FLAG_CHANGED);
+      UNSET_FLAG(select->flags, RIB_ENTRY_CHANGED);
     }
 #endif
 
index 03ae4669979f548d926fba3ba2882fe8b4aebc2e..b3cc6f44c0a70dba81242ec4dd1ae6fc685e870a 100644 (file)
@@ -593,7 +593,7 @@ zebra_rnh_process_static_routes (vrf_id_t vrfid, int family,
                        vrfid, bufn, bufs);
         }
 
-      SET_FLAG(srib->flags, ZEBRA_FLAG_CHANGED);
+      SET_FLAG(srib->flags, RIB_ENTRY_CHANGED);
       SET_FLAG(srib->status, RIB_ENTRY_NEXTHOPS_CHANGED);
       rib_queue_add(static_rn);
     }