diff options
author | Marcin Siodelski <marcin@isc.org> | 2020-09-11 19:31:17 +0200 |
---|---|---|
committer | Marcin Siodelski <marcin@isc.org> | 2020-09-16 16:39:12 +0200 |
commit | cba758e9f7122d919fcdf282d08aef763efe9f46 (patch) | |
tree | 3bcb43f883f92817498dc822122d4c5a23742d9c /src | |
parent | [#1415] Implmented address range permutation (diff) | |
download | kea-cba758e9f7122d919fcdf282d08aef763efe9f46.tar.xz kea-cba758e9f7122d919fcdf282d08aef763efe9f46.zip |
[#1415] Added permutation ptr to the pool
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/dhcpsrv/address_range_permutation.h | 5 | ||||
-rw-r--r-- | src/lib/dhcpsrv/pool.cc | 3 | ||||
-rw-r--r-- | src/lib/dhcpsrv/pool.h | 22 |
3 files changed, 25 insertions, 5 deletions
diff --git a/src/lib/dhcpsrv/address_range_permutation.h b/src/lib/dhcpsrv/address_range_permutation.h index af77153916..11036b947d 100644 --- a/src/lib/dhcpsrv/address_range_permutation.h +++ b/src/lib/dhcpsrv/address_range_permutation.h @@ -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 diff --git a/src/lib/dhcpsrv/pool.cc b/src/lib/dhcpsrv/pool.cc index 50dc6b46c3..4cbd620042 100644 --- a/src/lib/dhcpsrv/pool.cc +++ b/src/lib/dhcpsrv/pool.cc @@ -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 { diff --git a/src/lib/dhcpsrv/pool.h b/src/lib/dhcpsrv/pool.h index d81d2ab2c4..36be01b243 100644 --- a/src/lib/dhcpsrv/pool.h +++ b/src/lib/dhcpsrv/pool.h @@ -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; |