diff options
| -rw-r--r-- | isisd/isis_tx_queue.c | 8 | ||||
| -rw-r--r-- | isisd/isisd.c | 2 | ||||
| -rw-r--r-- | isisd/isisd.h | 1 |
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 }; |
