diff options
author | Chris Hall <GMCH@hestia.halldom.com> | 2010-05-27 21:09:56 +0100 |
---|---|---|
committer | Chris Hall <GMCH@hestia.halldom.com> | 2010-05-27 21:09:56 +0100 |
commit | d0dcbe07baffdbff39521e5ae8eca3f80a8d6f3e (patch) | |
tree | 399779682d9449b2376364cf9338891e6b674e85 /bgpd/bgp_engine.h | |
parent | 76c460a85aa0aea7dc90948f3b52979d09f94812 (diff) | |
download | quagga-d0dcbe07baffdbff39521e5ae8eca3f80a8d6f3e.tar.bz2 quagga-d0dcbe07baffdbff39521e5ae8eca3f80a8d6f3e.tar.xz |
Adjustments to scheduling of Routing Engine work.
These changes mean that Quagga copes a little better when there are
very large numbers of updates/withrawal messages arriving all at
once...
...it is not possible to cure the problem of overloading Quagga by
throwing too much at it. However, these changes at least mean that
when BGP sessions drop, the Routing Engine will notice that in a
reasonable time, and can clear up all routes associated with
the session (throwing away any updates/withdraws already received,
but not yet dealt with.)
Amonst these changes are Chris Caputo's patches for bgp_node locking
issues -- see quagga-dev 7960 mailing list message.
Diffstat (limited to 'bgpd/bgp_engine.h')
-rw-r--r-- | bgpd/bgp_engine.h | 33 |
1 files changed, 6 insertions, 27 deletions
diff --git a/bgpd/bgp_engine.h b/bgpd/bgp_engine.h index 2d36b260..ceec1b2f 100644 --- a/bgpd/bgp_engine.h +++ b/bgpd/bgp_engine.h @@ -116,22 +116,12 @@ bgp_queue_logging(const char* name, mqueue_queue mq, struct queue_stats* stats) stats->xon = 0 ; } ; -/* Send given message to the BGP Engine -- ordinary +/* Send given message to the BGP Engine -- priority/ordinary */ Inline void -bgp_to_bgp_engine(mqueue_block mqb) +bgp_to_bgp_engine(mqueue_block mqb, enum mqb_rank priority) { - mqueue_enqueue(bgp_nexus->queue, mqb, 0) ; - if (qdebug) - bgp_queue_logging("BGP Engine", bgp_nexus->queue, &bgp_engine_queue_stats) ; -} ; - -/* Send given message to the BGP Engine -- priority - */ -Inline void -bgp_to_bgp_engine_priority(mqueue_block mqb) -{ - mqueue_enqueue(bgp_nexus->queue, mqb, 1) ; + mqueue_enqueue(bgp_nexus->queue, mqb, priority) ; if (qdebug) bgp_queue_logging("BGP Engine", bgp_nexus->queue, &bgp_engine_queue_stats) ; } ; @@ -140,26 +130,15 @@ bgp_to_bgp_engine_priority(mqueue_block mqb) * */ -/* Send given message to the Routing Engine -- ordinary +/* Send given message to the Routing Engine -- priority/ordinary */ Inline void -bgp_to_routing_engine(mqueue_block mqb) +bgp_to_routing_engine(mqueue_block mqb, enum mqb_rank priority) { - mqueue_enqueue(routing_nexus->queue, mqb, 0) ; + mqueue_enqueue(routing_nexus->queue, mqb, priority) ; if (qdebug) bgp_queue_logging("Routing Engine", routing_nexus->queue, &routing_engine_queue_stats) ; } ; -/* Send given message to the Routing Engine -- priority - */ -Inline void -bgp_to_routing_engine_priority(mqueue_block mqb) -{ - mqueue_enqueue(routing_nexus->queue, mqb, 1) ; - if (qdebug) - bgp_queue_logging("Routing Engine", routing_nexus->queue, - &routing_engine_queue_stats) ; -} ; - #endif /* QUAGGA_BGP_ENGINE_H */ |