From 5b1ef2fb03feade376663862950ef9655d338bae Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Fri, 1 Feb 2019 14:05:29 -0800 Subject: Take netmask bits from most specific route. --- controller/EmbeddedNetworkController.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'controller') diff --git a/controller/EmbeddedNetworkController.cpp b/controller/EmbeddedNetworkController.cpp index 203dcdd5..8b3f1517 100644 --- a/controller/EmbeddedNetworkController.cpp +++ b/controller/EmbeddedNetworkController.cpp @@ -1523,8 +1523,11 @@ void EmbeddedNetworkController::_request( int routedNetmaskBits = -1; for(unsigned int rk=0;rkrouteCount;++rk) { - if (reinterpret_cast(&(nc->routes[rk].target))->containsAddress(ip)) - routedNetmaskBits = reinterpret_cast(&(nc->routes[rk].target))->netmaskBits(); + if (reinterpret_cast(&(nc->routes[rk].target))->containsAddress(ip)) { + const int nb = (int)(reinterpret_cast(&(nc->routes[rk].target))->netmaskBits()); + if (nb > routedNetmaskBits) + routedNetmaskBits = nb; + } } if (routedNetmaskBits >= 0) { -- cgit v1.2.3