fix: enhance KNX OAM router functionality and security features

Signed-off-by: Tony <tonylu@tony-cloud.com>
This commit is contained in:
Tony
2026-05-29 01:31:58 +08:00
parent bb0fb01c00
commit f39ae6f0c6
13 changed files with 375 additions and 35 deletions
@@ -34,7 +34,9 @@ bool GatewayKnxTpIpRouter::handleOpenKnxTunnelFrame(const uint8_t* data, size_t
if (frame.valid()) {
route_to_all_internal_instances = IsKnxBroadcastManagementRequest(frame);
if (!route_to_oam && oam_router_ != nullptr &&
MatchesOamRouterLocalIndividualAddress(frame, *oam_router_)) {
(MatchesOamRouterLocalIndividualAddress(frame, *oam_router_) ||
oam_router_->matchesSecureSyncSerial(frame) ||
oam_router_->matchesRecentSecureToolAccess(frame))) {
route_to_oam = true;
}
}
@@ -326,7 +328,10 @@ bool GatewayKnxTpIpRouter::handleOpenKnxTpIngressFrame(const uint8_t* data, size
const bool broadcast_management = IsKnxBroadcastManagementRequest(frame);
const bool addressed_to_oam =
oam_router_ != nullptr && MatchesOamRouterLocalIndividualAddress(frame, *oam_router_);
oam_router_ != nullptr &&
(MatchesOamRouterLocalIndividualAddress(frame, *oam_router_) ||
oam_router_->matchesSecureSyncSerial(frame) ||
oam_router_->matchesRecentSecureToolAccess(frame));
if (!broadcast_management && !addressed_to_oam) {
return false;
}