From 01ce67e1b158dc13937e0e44b0f87e44e1731386 Mon Sep 17 00:00:00 2001 From: Christian Giese Date: Mon, 6 Dec 2021 14:27:38 +0100 Subject: [PATCH] fix L2TP traffic flow tracking and loss count --- src/bbl_l2tp.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/bbl_l2tp.c b/src/bbl_l2tp.c index 36087cef..49d50eee 100644 --- a/src/bbl_l2tp.c +++ b/src/bbl_l2tp.c @@ -899,6 +899,7 @@ bbl_l2tp_data_rx(bbl_ethernet_header_t *eth, bbl_l2tp_t *l2tp, bbl_interface_s * struct timespec delay; uint64_t delay_nsec; + uint64_t loss; UNUSED(ctx); UNUSED(eth); @@ -1056,10 +1057,12 @@ bbl_l2tp_data_rx(bbl_ethernet_header_t *eth, bbl_l2tp_t *l2tp, bbl_interface_s * if(!pppoe_session->network_ipv4_rx_first_seq) { pppoe_session->network_ipv4_rx_first_seq = bbl->flow_seq; interface->ctx->stats.session_traffic_flows_verified++; + pppoe_session->session_traffic_flows_verified++; } else { - if(pppoe_session->network_ipv4_rx_last_seq +1 != bbl->flow_seq) { - interface->stats.session_ipv4_loss++; - pppoe_session->stats.network_ipv4_loss++; + if((pppoe_session->network_ipv4_rx_last_seq +1) < bbl->flow_seq) { + loss = bbl->flow_seq - (pppoe_session->network_ipv4_rx_last_seq +1); + interface->stats.session_ipv4_loss += loss; + pppoe_session->stats.network_ipv4_loss += loss; LOG(LOSS, "LOSS (ID: %u) flow: %lu seq: %lu last: %lu\n", pppoe_session->session_id, bbl->flow_id, bbl->flow_seq, pppoe_session->network_ipv4_rx_last_seq); }