Skip to content

Commit

Permalink
zebra: add more logs/asserts to rib work queue code
Browse files Browse the repository at this point in the history
  * zebra/zebra_rib.c: (rib_queue_add, rib_queue_init) Add some more
    logs and asserts.

From: Subbaiah Venkata <[email protected]>
Signed-off-by: Avneesh Sachdev <[email protected]>
Signed-off-by: David Lamparter <[email protected]>
  • Loading branch information
Subbaiah Venkata authored and avnshs committed Apr 8, 2012
1 parent e38e0df commit fc328ac
Showing 1 changed file with 31 additions and 4 deletions.
35 changes: 31 additions & 4 deletions zebra/zebra_rib.c
Original file line number Diff line number Diff line change
Expand Up @@ -1271,14 +1271,30 @@ 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[INET_ADDRSTRLEN];
assert (zebra && rn);

if (IS_ZEBRA_DEBUG_RIB_Q)
inet_ntop (AF_INET, &rn->p.u.prefix, buf, INET_ADDRSTRLEN);

/* Pointless to queue a route_node with no RIB entries to add or remove */
if (!rn->info)
{
char buf[INET6_ADDRSTRLEN];
zlog_debug ("%s: called for route_node (%p, %d) with no ribs",
__func__, rn, rn->lock);
zlog_backtrace(LOG_DEBUG);
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);
if (IS_ZEBRA_DEBUG_RIB_Q)
zlog_info ("%s: %s/%d: work queue added", __func__, buf, rn->p.prefixlen);

assert (zebra);

if (zebra->ribq == NULL)
{
zlog_err ("%s: work_queue does not exist!", __func__);
return;
}

/*
Expand All @@ -1293,6 +1309,11 @@ rib_queue_add (struct zebra_t *zebra, struct route_node *rn)
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.
Expand Down Expand Up @@ -1320,6 +1341,8 @@ 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")))
{
Expand All @@ -1335,7 +1358,11 @@ 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.
Expand Down

0 comments on commit fc328ac

Please sign in to comment.