summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--isisd/isis_tx_queue.c8
-rw-r--r--isisd/isisd.c2
-rw-r--r--isisd/isisd.h1
3 files changed, 11 insertions, 0 deletions
diff --git a/isisd/isis_tx_queue.c b/isisd/isis_tx_queue.c
index 46d1595f06..bf5817d008 100644
--- a/isisd/isis_tx_queue.c
+++ b/isisd/isis_tx_queue.c
@@ -46,6 +46,7 @@ struct isis_tx_queue {
struct isis_tx_queue_entry {
struct isis_lsp *lsp;
enum isis_tx_type type;
+ bool is_retry;
struct thread *retry;
struct isis_tx_queue *queue;
};
@@ -124,6 +125,11 @@ static int tx_queue_send_event(struct thread *thread)
e->retry = NULL;
thread_add_timer(master, tx_queue_send_event, e, 5, &e->retry);
+ if (e->is_retry) {
+ queue->circuit->area->lsp_rxmt_count++;
+ } else {
+ e->is_retry = true;
+ }
queue->send_event(queue->circuit, e->lsp, e->type);
/* Don't access e here anymore, send_event might have destroyed it */
@@ -164,6 +170,8 @@ void _isis_tx_queue_add(struct isis_tx_queue *queue,
if (e->retry)
thread_cancel(e->retry);
thread_add_event(master, tx_queue_send_event, e, 0, &e->retry);
+
+ e->is_retry = false;
}
void _isis_tx_queue_del(struct isis_tx_queue *queue, struct isis_lsp *lsp,
diff --git a/isisd/isisd.c b/isisd/isisd.c
index bf0ea0493a..79145db025 100644
--- a/isisd/isisd.c
+++ b/isisd/isisd.c
@@ -1260,6 +1260,8 @@ DEFUN (show_isis_summary,
vty_out(vty, " TX counters per PDU type:\n");
pdu_counter_print(vty, " ", area->pdu_tx_counters);
+ vty_out(vty, " LSP RXMT: %" PRIu64 "\n",
+ area->lsp_rxmt_count);
vty_out(vty, " RX counters per PDU type:\n");
pdu_counter_print(vty, " ", area->pdu_rx_counters);
diff --git a/isisd/isisd.h b/isisd/isisd.h
index 9ab06f26c2..e781380c7a 100644
--- a/isisd/isisd.h
+++ b/isisd/isisd.h
@@ -171,6 +171,7 @@ struct isis_area {
pdu_counter_t pdu_tx_counters;
pdu_counter_t pdu_rx_counters;
+ uint64_t lsp_rxmt_count;
QOBJ_FIELDS
};