From 5c8384cb2c3b005b7a2a0e9807a1358693b7b20b Mon Sep 17 00:00:00 2001 From: Christian Giese Date: Mon, 22 Apr 2024 16:14:31 +0000 Subject: [PATCH] store RX interface changes --- code/bngblaster/src/bbl_rx.c | 7 ++++++- code/bngblaster/src/bbl_stream.c | 4 ++++ code/bngblaster/src/bbl_stream.h | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/code/bngblaster/src/bbl_rx.c b/code/bngblaster/src/bbl_rx.c index c7c9291c..f51ca1be 100644 --- a/code/bngblaster/src/bbl_rx.c +++ b/code/bngblaster/src/bbl_rx.c @@ -17,7 +17,12 @@ bbl_rx_stream_network(bbl_network_interface_s *interface, if(!eth->bbl) return false; stream = bbl_stream_rx(eth, interface->mac); if(stream) { - if(stream->rx_network_interface == NULL) { + if(stream->rx_network_interface != interface) { + if(stream->rx_network_interface) { + /* RX interface has changed! */ + stream->rx_interface_changes++; + stream->rx_interface_changed_epoch = eth->timestamp.tv_sec; + } stream->rx_network_interface = interface; } return true; diff --git a/code/bngblaster/src/bbl_stream.c b/code/bngblaster/src/bbl_stream.c index 787e6e13..14ba5ebf 100644 --- a/code/bngblaster/src/bbl_stream.c +++ b/code/bngblaster/src/bbl_stream.c @@ -2580,6 +2580,10 @@ bbl_stream_json(bbl_stream_s *stream, bool debug) "rx-last-epoch", stream->rx_last_epoch ); + if(stream->rx_interface_changes) { + json_object_set(root, "rx-interface-changes", json_integer(stream->rx_interface_changes)); + json_object_set(root, "rx-interface-changed-epoch", json_integer(stream->rx_interface_changed_epoch)); + } if(stream->config->rx_mpls1) { json_object_set(root, "rx-mpls1-expected", json_integer(stream->config->rx_mpls1_label)); } diff --git a/code/bngblaster/src/bbl_stream.h b/code/bngblaster/src/bbl_stream.h index 6805974a..3b416dca 100644 --- a/code/bngblaster/src/bbl_stream.h +++ b/code/bngblaster/src/bbl_stream.h @@ -193,6 +193,9 @@ typedef struct bbl_stream_ __time_t rx_first_epoch; __time_t rx_last_epoch; + __time_t rx_interface_changed_epoch; + uint8_t rx_interface_changes; + uint8_t rx_ttl; /* IPv4 or IPv6 TTL */ uint8_t rx_priority; /* IPv4 TOS or IPv6 TC */ uint8_t rx_outer_vlan_pbit;