diff --git a/network/src/main/java/org/zstack/network/l3/L3BasicNetwork.java b/network/src/main/java/org/zstack/network/l3/L3BasicNetwork.java index 7efcc6ea..6618f25f 100644 --- a/network/src/main/java/org/zstack/network/l3/L3BasicNetwork.java +++ b/network/src/main/java/org/zstack/network/l3/L3BasicNetwork.java @@ -861,6 +861,10 @@ private void handle(APIGetFreeIpMsg msg) { int limit = msg.getLimit(); String start = msg.getStart(); for ( IpRangeVO ipRangeVO : ipRangeVOs) { + if (limit <= 0) { + break; + } + if( msg.getStart() == null){ if ( ipRangeVO.getIpVersion() == IPv6Constants.IPv6) { start = "::"; @@ -873,7 +877,7 @@ private void handle(APIGetFreeIpMsg msg) { if (freeIpInventorys.size() >= msg.getLimit()) { break; } - limit -= freeIpInventorys.size(); + limit -= tempFreeIpInventorys.size(); } reply.setInventories(freeIpInventorys);