summaryrefslogtreecommitdiffstats
path: root/zebra/zebra_rib.c
diff options
context:
space:
mode:
authorJeffrey C. Ollie <jeff@ocjtech.us>2007-04-09 15:36:33 -0500
committerJeffrey C. Ollie <jeff@ocjtech.us>2007-04-09 15:36:33 -0500
commit37e11172f8ed157340783b73d56595bb02d0a2d2 (patch)
tree65163a9cdb8ded9c55c94da92e8a6327bda9067c /zebra/zebra_rib.c
parent8d3e3ccfd0d0cb82b253f937339d1c6189a2bf54 (diff)
parent43cd33a44e010f818633b7f144b5a0be352b41e7 (diff)
downloadquagga-0.99.6-realms.patch.tar.bz2
quagga-0.99.6-realms.patch.tar.xz
Merge commit 'quagga_0_99_6_release' into linux-realmsquagga-0.99.6-realms.patch
Diffstat (limited to 'zebra/zebra_rib.c')
-rw-r--r--zebra/zebra_rib.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index 8d4e732c..64d23199 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -1103,20 +1103,20 @@ rib_queue_init (struct zebra_t *zebra)
* The queue length is bounded by the maximal size of the routing table,
* as a route_node will not be requeued, if already queued.
*
- * RIBs are submitted via rib_addnode and rib_delnode, which set
- * minimal state and then submit route_node to queue for best-path
- * selection later. Order of add/delete state changes are preserved for
- * any given RIB.
+ * RIBs are submitted via rib_addnode or rib_delnode which set minimal
+ * state, or static_install_ipv{4,6} (when an existing RIB is updated)
+ * and then submit route_node to queue for best-path selection later.
+ * Order of add/delete state changes are preserved for any given RIB.
*
* Deleted RIBs are reaped during best-path selection.
*
* rib_addnode
* |-> rib_link or unset RIB_ENTRY_REMOVE |->Update kernel with
- * |-> rib_addqueue | best RIB, if required
- * | |
- * |-> .......................... -> rib_process
- * | |
- * |-> rib_addqueue |-> rib_unlink
+ * |-------->| | best RIB, if required
+ * | |
+ * static_install->|->rib_addqueue...... -> rib_process
+ * | |
+ * |-------->| |-> rib_unlink
* |-> set RIB_ENTRY_REMOVE |
* rib_delnode (RIB freed)
*
@@ -1557,6 +1557,7 @@ static_install_ipv4 (struct prefix *p, struct static_ipv4 *si)
nexthop_blackhole_add (rib);
break;
}
+ rib_queue_add (&zebrad, rn);
}
else
{
@@ -1721,7 +1722,7 @@ static_add_ipv4 (struct prefix *p, struct in_addr *gate, const char *ifname,
}
}
- /* Distance chaged. */
+ /* Distance changed. */
if (update)
static_delete_ipv4 (p, gate, ifname, update->distance, vrf_id);
@@ -2118,6 +2119,7 @@ static_install_ipv6 (struct prefix *p, struct static_ipv6 *si)
nexthop_ipv6_ifname_add (rib, &si->ipv6, si->ifname);
break;
}
+ rib_queue_add (&zebrad, rn);
}
else
{