summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_engine.h
diff options
context:
space:
mode:
Diffstat (limited to 'bgpd/bgp_engine.h')
-rw-r--r--bgpd/bgp_engine.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/bgpd/bgp_engine.h b/bgpd/bgp_engine.h
index 7673328c..8d344b22 100644
--- a/bgpd/bgp_engine.h
+++ b/bgpd/bgp_engine.h
@@ -26,6 +26,7 @@
#include "lib/mqueue.h"
#include "lib/qpnexus.h"
+#include "lib/log.h"
#ifndef Inline
#define Inline static inline
@@ -37,12 +38,50 @@
*
*/
+static unsigned bgp_engine_queue_thresh_up = 0 ;
+static unsigned bgp_engine_queue_thresh_down = 0 ;
+static unsigned peering_engine_queue_thresh_up = 0 ;
+static unsigned peering_engine_queue_thresh_down = 0 ;
+
+Inline void
+bgp_queue_logging(const char* name, unsigned count, unsigned* up,
+ unsigned* down)
+{
+ if (count > *up)
+ {
+ if (*up != 0)
+ {
+ zlog_debug("%s queue up to %u entries", name, count) ;
+
+ *up *= 2 ;
+ *down = *up / 4 ;
+ }
+ else
+ *up = 32 ;
+ } ;
+
+ if (count < *down)
+ {
+ zlog_debug("%s queue down to %u entries", name, count) ;
+
+ if (*up == 32)
+ *down = 0 ;
+ else
+ {
+ *up /= 2 ;
+ *down = *up / 2 ;
+ } ;
+ } ; ;
+} ;
+
/* Send given message to the BGP Engine -- ordinary
*/
Inline void
bgp_to_bgp_engine(mqueue_block mqb)
{
mqueue_enqueue(bgp_nexus->queue, mqb, 0) ;
+ bgp_queue_logging("BGP Engine", bgp_nexus->queue->count,
+ &bgp_engine_queue_thresh_up, &bgp_engine_queue_thresh_down) ;
} ;
/* Send given message to the BGP Engine -- priority
@@ -51,6 +90,8 @@ Inline void
bgp_to_bgp_engine_priority(mqueue_block mqb)
{
mqueue_enqueue(bgp_nexus->queue, mqb, 1) ;
+ bgp_queue_logging("BGP Engine", bgp_nexus->queue->count,
+ &bgp_engine_queue_thresh_up, &bgp_engine_queue_thresh_down) ;
} ;
/*==============================================================================
@@ -63,6 +104,8 @@ Inline void
bgp_to_peering_engine(mqueue_block mqb)
{
mqueue_enqueue(routing_nexus->queue, mqb, 0) ;
+ bgp_queue_logging("Peering Engine", routing_nexus->queue->count,
+ &peering_engine_queue_thresh_up, &peering_engine_queue_thresh_down) ;
} ;
/* Send given message to the Peering Engine -- priority
@@ -71,6 +114,8 @@ Inline void
bgp_to_peering_engine_priority(mqueue_block mqb)
{
mqueue_enqueue(routing_nexus->queue, mqb, 1) ;
+ bgp_queue_logging("Peering Engine", routing_nexus->queue->count,
+ &peering_engine_queue_thresh_up, &peering_engine_queue_thresh_down) ;
} ;
#endif /* QUAGGA_BGP_ENGINE_H */