From 07c06f2ef324b3254e3695957be97f76ecf1b02a Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Sun, 22 Jun 2025 18:46:28 -0700 Subject: [PATCH] handle ORIGIN_TAG 0.0.0.0 A valid tag, but no additional information. Handle as if no tag provided. updates 190eb8750f0d31422e621bb95df7b32a0c3ab906 --- src/udp_collector.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/udp_collector.cpp b/src/udp_collector.cpp index a673c49..39ced1f 100644 --- a/src/udp_collector.cpp +++ b/src/udp_collector.cpp @@ -501,12 +501,17 @@ void UDPCollector::process_one(const uint8_t *buf, size_t nrx, origin_t origin, return; } else if(origin==Forwarded) { - auto ifit(ifinfo.byAddr.find(originaddr)); - if(ifit!=ifinfo.byAddr.end()) { - // original destination is local interface address + auto isany = originaddr.isAny(); // valid ORIGIN_TAG, but no additional information + decltype(ifinfo.byAddr)::const_iterator ifit; + if(!isany) + ifit = ifinfo.byAddr.find(originaddr); + + if(isany || ifit!=ifinfo.byAddr.end()) { + // original destination is wildcard, or local interface address originaddr.setPort(bind_addr.port()); dest = originaddr; - srcIface = ifit->second.first; + if(!isany) + srcIface = ifit->second.first; process_one(M.save(), M.size(), OriginTag, ifinfo); return;