Browse Source

[3692] Address review comments.

Replaced the do-while loop with the for loop in the allocateLease4. Also,
updated the copyright date.
Marcin Siodelski 10 years ago
parent
commit
6734961cd6
2 changed files with 10 additions and 8 deletions
  1. 9 7
      src/lib/dhcpsrv/alloc_engine.cc
  2. 1 1
      src/lib/dhcpsrv/tests/alloc_engine_unittest.cc

+ 9 - 7
src/lib/dhcpsrv/alloc_engine.cc

@@ -21,6 +21,7 @@
 #include <hooks/hooks_manager.h>
 
 #include <cstring>
+#include <limits>
 #include <vector>
 #include <string.h>
 
@@ -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<uint32_t>::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_);

+ 1 - 1
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