]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1415] Added permutation ptr to the pool
authorMarcin Siodelski <marcin@isc.org>
Fri, 11 Sep 2020 17:31:17 +0000 (19:31 +0200)
committerMarcin Siodelski <marcin@isc.org>
Wed, 16 Sep 2020 14:39:12 +0000 (14:39 +0000)
src/lib/dhcpsrv/address_range_permutation.h
src/lib/dhcpsrv/pool.cc
src/lib/dhcpsrv/pool.h

index af77153916ba6bec2dc679bc9e4236737fe66404..11036b947d9d5c6faa7816fa0e130c6d8043d4db 100644 (file)
@@ -10,6 +10,8 @@
 #include <asiolink/io_address.h>
 #include <dhcpsrv/address_range.h>
 
+#include <boost/shared_ptr.hpp>
+
 #include <map>
 #include <random>
 
@@ -113,6 +115,9 @@ private:
     std::mt19937 generator_;
 };
 
+/// @brief Pointer to the @c AddressRangePermutation.
+typedef boost::shared_ptr<AddressRangePermutation> AddressRangePermutationPtr;
+
 } // end of namespace isc::dhcp
 } // end of namespace isc
 
index 50dc6b46c3e3fe19a8d89edf57b71385ab660129..4cbd620042e5e47808ac41abae538bea4e961e79 100644 (file)
@@ -22,7 +22,8 @@ Pool::Pool(Lease::Type type, const isc::asiolink::IOAddress& first,
            const isc::asiolink::IOAddress& last)
     :id_(getNextID()), first_(first), last_(last), type_(type),
      capacity_(0), cfg_option_(new CfgOption()), client_class_(""),
-     last_allocated_(first), last_allocated_valid_(false) {
+     last_allocated_(first), last_allocated_valid_(false),
+     permutation_() {
 }
 
 bool Pool::inRange(const isc::asiolink::IOAddress& addr) const {
index d81d2ab2c4ff71498a8aaa50020e5e5d1cdb6181..36be01b2439003ab4ea0cf68af810961df3d01c2 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2012-2019 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2020 Internet Systems Consortium, Inc. ("ISC")
 //
 // This Source Code Form is subject to the terms of the Mozilla Public
 // License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -8,13 +8,14 @@
 #define POOL_H
 
 #include <asiolink/io_address.h>
-#include <dhcp/classify.h>
-#include <dhcp/option6_pdexclude.h>
-#include <boost/shared_ptr.hpp>
 #include <cc/data.h>
 #include <cc/user_context.h>
+#include <dhcp/classify.h>
+#include <dhcp/option6_pdexclude.h>
+#include <dhcpsrv/address_range_permutation.h>
 #include <dhcpsrv/cfg_option.h>
 #include <dhcpsrv/lease.h>
+
 #include <boost/shared_ptr.hpp>
 
 #include <vector>
@@ -166,6 +167,13 @@ public:
     /// @return A pointer to unparsed pool configuration.
     virtual data::ElementPtr toElement() const;
 
+    /// @brief Returns pointer to the permutation associated with the pool.
+    ///
+    /// @return Pointer to the address range permutation.
+    AddressRangePermutationPtr getPermutation() const {
+        return (permutation_);
+    }
+
 protected:
 
     /// @brief protected constructor
@@ -234,6 +242,12 @@ protected:
 
     /// @brief Status of last allocated address
     bool last_allocated_valid_;
+
+    /// @brief Pointer to the permutation object.
+    ///
+    /// It may be initialized for certain pools and poo types to provide
+    /// address randomization capabilities.
+    AddressRangePermutationPtr permutation_;
 };
 
 class Pool4;