diff options
author | Stephen Hemminger <shemminger@vyatta.com> | 2009-12-09 17:54:49 +0300 |
---|---|---|
committer | Denis Ovsienko <infrastation@yandex.ru> | 2009-12-09 17:54:49 +0300 |
commit | cc2dd9280c4456586080d1cf4537d26c02fa9a36 (patch) | |
tree | a7573e32187b87015f2a8efc6cbd9b8b7ef7057c | |
parent | 1352ef32d70dcc102074814de63b5d08e591dd2d (diff) |
zebra: cleanup RIB meta queue code
* zebra/zebra_rib.c
* rib_queue_add(): indent comments and simplify debug code
* rib_queue_init(): remove unneeded assert() calls and
extra return statements
-rw-r--r-- | zebra/zebra_rib.c | 47 |
1 files changed, 10 insertions, 37 deletions
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index 0a59c5fa..12f3fa5a 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -1271,49 +1271,28 @@ rib_meta_queue_add (struct meta_queue *mq, struct route_node *rn) static void rib_queue_add (struct zebra_t *zebra, struct route_node *rn) { - char buf[INET6_ADDRSTRLEN]; - assert (zebra && rn); if (IS_ZEBRA_DEBUG_RIB_Q) - inet_ntop (rn->p.family, &rn->p.u.prefix, buf, INET6_ADDRSTRLEN); - - /* Pointless to queue a route_node with no RIB entries to add or remove */ - if (!rn->info) { - zlog_debug ("%s: called for route_node (%p, %d) with no ribs", - __func__, rn, rn->lock); - zlog_backtrace(LOG_DEBUG); - return; - } - - if (IS_ZEBRA_DEBUG_RIB_Q) - zlog_info ("%s: %s/%d: work queue added", __func__, buf, rn->p.prefixlen); - - assert (zebra); + char buf[INET6_ADDRSTRLEN]; - if (zebra->ribq == NULL) - { - zlog_err ("%s: work_queue does not exist!", __func__); - return; + zlog_info ("%s: %s/%d: work queue added", __func__, + inet_ntop (rn->p.family, &rn->p.u.prefix, buf, INET6_ADDRSTRLEN), + rn->p.prefixlen); } - /* The RIB queue should normally be either empty or holding the only work_queue_item - * element. In the latter case this element would hold a pointer to the meta queue - * structure, which must be used to actually queue the route nodes to process. So - * create the MQ holder, if necessary, then push the work into it in any case. + /* + * The RIB queue should normally be either empty or holding the only + * work_queue_item element. In the latter case this element would + * hold a pointer to the meta queue structure, which must be used to + * actually queue the route nodes to process. So create the MQ + * holder, if necessary, then push the work into it in any case. * This semantics was introduced after 0.99.9 release. */ - - /* Should I invent work_queue_empty() and use it, or it's Ok to do as follows? */ if (!zebra->ribq->items->count) work_queue_add (zebra->ribq, zebra->mq); rib_meta_queue_add (zebra->mq, rn); - - if (IS_ZEBRA_DEBUG_RIB_Q) - zlog_debug ("%s: %s/%d: rn %p queued", __func__, buf, rn->p.prefixlen, rn); - - return; } /* Create new meta queue. @@ -1341,8 +1320,6 @@ meta_queue_new (void) static void rib_queue_init (struct zebra_t *zebra) { - assert (zebra); - if (! (zebra->ribq = work_queue_new (zebra->master, "route_node processing"))) { @@ -1358,11 +1335,7 @@ rib_queue_init (struct zebra_t *zebra) zebra->ribq->spec.hold = rib_process_hold_time; if (!(zebra->mq = meta_queue_new ())) - { zlog_err ("%s: could not initialise meta queue!", __func__); - return; - } - return; } /* RIB updates are processed via a queue of pointers to route_nodes. |