From 41a417bee0a55712a23a7a4bc080a021fe84ad51 Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Fri, 11 Jul 2025 10:23:43 +0200 Subject: common 3849213: allow setting TTL without UDP source --- lib/edioutput/Transport.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'lib/edioutput/Transport.cpp') diff --git a/lib/edioutput/Transport.cpp b/lib/edioutput/Transport.cpp index e9559b5..6707a90 100644 --- a/lib/edioutput/Transport.cpp +++ b/lib/edioutput/Transport.cpp @@ -41,10 +41,15 @@ void configuration_t::print() const if (auto udp_dest = dynamic_pointer_cast(edi_dest)) { etiLog.level(info) << " UDP to " << udp_dest->dest_addr << ":" << udp_dest->dest_port; if (not udp_dest->source_addr.empty()) { - etiLog.level(info) << " source " << udp_dest->source_addr; - etiLog.level(info) << " ttl " << udp_dest->ttl; + etiLog.level(info) << " source address=" << udp_dest->source_addr; } - etiLog.level(info) << " source port " << udp_dest->source_port; + if (udp_dest->ttl) { + etiLog.level(info) << " ttl=" << (int)(*udp_dest->ttl); + } + else { + etiLog.level(info) << " ttl=(default)"; + } + etiLog.level(info) << " source port=" << udp_dest->source_port; } else if (auto tcp_dest = dynamic_pointer_cast(edi_dest)) { etiLog.level(info) << " TCP listening on port " << tcp_dest->listen_port; @@ -80,7 +85,10 @@ Sender::Sender(const configuration_t& conf) : if (not udp_dest->source_addr.empty()) { udp_socket.setMulticastSource(udp_dest->source_addr.c_str()); - udp_socket.setMulticastTTL(udp_dest->ttl); + } + + if (udp_dest->ttl) { + udp_socket.setMulticastTTL(*udp_dest->ttl); } auto sender = make_shared( -- cgit v1.2.3 From b59516179a3e1842de95f8aef549a75dac1102c6 Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Sun, 31 Aug 2025 19:02:28 +0200 Subject: Common d828d8e: Add TCP output reconnect logs from rmens --- lib/edioutput/Transport.cpp | 16 +++++++++++++--- lib/edioutput/Transport.h | 7 ++++++- 2 files changed, 19 insertions(+), 4 deletions(-) (limited to 'lib/edioutput/Transport.cpp') diff --git a/lib/edioutput/Transport.cpp b/lib/edioutput/Transport.cpp index 6707a90..3898213 100644 --- a/lib/edioutput/Transport.cpp +++ b/lib/edioutput/Transport.cpp @@ -107,7 +107,7 @@ Sender::Sender(const configuration_t& conf) : make_shared(tcp_dest->pft_settings, sender)); } else if (auto tcp_dest = dynamic_pointer_cast(edi_dest)) { - auto sender = make_shared(tcp_dest->dest_addr, tcp_dest->dest_port); + auto sender = make_shared(tcp_dest->dest_addr, tcp_dest->dest_port, m_conf.verbose); m_pft_spreaders.emplace_back( make_shared(tcp_dest->pft_settings, sender)); } @@ -207,7 +207,13 @@ void Sender::tcp_dispatcher_t::send_packet(const std::vector &frame) void Sender::tcp_send_client_t::send_packet(const std::vector &frame) { - sock.sendall(frame); + const auto error_stats = sock.sendall(frame); + + if (verbose and error_stats.has_seen_new_errors) { + etiLog.level(warn) << "TCP output " << dest_addr << ":" << dest_port + << " has " << error_stats.num_reconnects + << " reconnects: most recent error: " << error_stats.last_error; + } } Sender::udp_sender_t::udp_sender_t(std::string dest_addr, @@ -229,7 +235,11 @@ Sender::tcp_dispatcher_t::tcp_dispatcher_t(uint16_t listen_port, } Sender::tcp_send_client_t::tcp_send_client_t(const std::string &dest_addr, - uint16_t dest_port) : + uint16_t dest_port, + bool verbose) : + dest_addr(dest_addr), + dest_port(dest_port), + verbose(verbose), sock(dest_addr, dest_port) { } diff --git a/lib/edioutput/Transport.h b/lib/edioutput/Transport.h index b8a9008..96784c0 100644 --- a/lib/edioutput/Transport.h +++ b/lib/edioutput/Transport.h @@ -118,8 +118,13 @@ class Sender { struct tcp_send_client_t : public i_sender { tcp_send_client_t( const std::string& dest_addr, - uint16_t dest_port); + uint16_t dest_port, + bool verbose); + std::string dest_addr; + uint16_t dest_port; + bool verbose; + size_t m_num_reconnects_prev = 0; Socket::TCPSendClient sock; virtual void send_packet(const std::vector &frame) override; }; -- cgit v1.2.3