浏览代码

Take netmask bits from most specific route.

Adam Ierymenko 6 年之前
父节点
当前提交
a3b2aeb001
共有 1 个文件被更改,包括 5 次插入2 次删除
  1. 5 2
      controller/EmbeddedNetworkController.cpp

+ 5 - 2
controller/EmbeddedNetworkController.cpp

@@ -1523,8 +1523,11 @@ void EmbeddedNetworkController::_request(
 
 
 				int routedNetmaskBits = -1;
 				int routedNetmaskBits = -1;
 				for(unsigned int rk=0;rk<nc->routeCount;++rk) {
 				for(unsigned int rk=0;rk<nc->routeCount;++rk) {
-					if (reinterpret_cast<const InetAddress *>(&(nc->routes[rk].target))->containsAddress(ip))
-						routedNetmaskBits = reinterpret_cast<const InetAddress *>(&(nc->routes[rk].target))->netmaskBits();
+					if (reinterpret_cast<const InetAddress *>(&(nc->routes[rk].target))->containsAddress(ip)) {
+						const int nb = (int)(reinterpret_cast<const InetAddress *>(&(nc->routes[rk].target))->netmaskBits());
+						if (nb > routedNetmaskBits)
+							routedNetmaskBits = nb;
+					}
 				}
 				}
 
 
 				if (routedNetmaskBits >= 0) {
 				if (routedNetmaskBits >= 0) {