From: Marcin Siodelski Date: Tue, 3 Feb 2015 15:42:29 +0000 (+0100) Subject: [3692] Address review comments. X-Git-Tag: trac3712_base~27^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6734961cd616c18403dce24591f929f18cd31b96;p=thirdparty%2Fkea.git [3692] Address review comments. Replaced the do-while loop with the for loop in the allocateLease4. Also, updated the copyright date. --- diff --git a/src/lib/dhcpsrv/alloc_engine.cc b/src/lib/dhcpsrv/alloc_engine.cc index ebc37256f8..38eb92bb30 100644 --- a/src/lib/dhcpsrv/alloc_engine.cc +++ b/src/lib/dhcpsrv/alloc_engine.cc @@ -21,6 +21,7 @@ #include #include +#include #include #include @@ -405,8 +406,13 @@ AllocEngine::allocateLeases6(const Subnet6Ptr& subnet, const DuidPtr& duid, // left), but this has one major problem. We exactly control allocation // moment, but we currently do not control expiration time at all - unsigned int i = attempts_; - do { + // Initialize the maximum number of attempts to pick and allocate an + // address. The value of 0 means "infinite", which is maximum uint32_t + // value. + uint32_t max_attempts = (attempts_ == 0) ? + std::numeric_limits::max() : attempts_; + + for (uint32_t i = 0; i < max_attempts; ++i) { IOAddress candidate = allocator->pickAddress(subnet, duid, hint); /// @todo: check if the address is reserved once we have host support @@ -461,11 +467,7 @@ AllocEngine::allocateLeases6(const Subnet6Ptr& subnet, const DuidPtr& duid, return (collection); } } - - // Continue trying allocation until we run out of attempts - // (or attempts are set to 0, which means infinite) - --i; - } while ((i > 0) || !attempts_); + } // Unable to allocate an address, return an empty lease. LOG_WARN(dhcpsrv_logger, DHCPSRV_ADDRESS6_ALLOC_FAIL).arg(attempts_); diff --git a/src/lib/dhcpsrv/tests/alloc_engine_unittest.cc b/src/lib/dhcpsrv/tests/alloc_engine_unittest.cc index d2c16611e9..a5d2fac63c 100644 --- a/src/lib/dhcpsrv/tests/alloc_engine_unittest.cc +++ b/src/lib/dhcpsrv/tests/alloc_engine_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (C) 2012-2014 Internet Systems Consortium, Inc. ("ISC") +// Copyright (C) 2012-2015 Internet Systems Consortium, Inc. ("ISC") // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above