]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2536] Updating Changelog and docs
authorPiotrek Zadroga <piotrek@isc.org>
Thu, 20 Apr 2023 13:59:11 +0000 (15:59 +0200)
committerPiotrek Zadroga <piotrek@isc.org>
Thu, 4 May 2023 21:18:01 +0000 (23:18 +0200)
ChangeLog
doc/sphinx/arm/dhcp4-srv.rst
doc/sphinx/arm/dhcp6-srv.rst
src/lib/dhcp/option4_dnr.cc
src/lib/dhcp/tests/option4_dnr_unittest.cc
src/lib/dhcp/tests/option6_dnr_unittest.cc

index 10d5ce9f02bdaa14405bfd79fa39b74015d05d30..e82f86c345faa0531c45549ddfbbb7aaea9555f1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2130.  [func]          piotrek
+       Added support of DHCP Options for the Discovery of
+       Network-designated Resolvers (DNR) as per draft-ietf-add-dnr.
+       Kea can now handle DHCPv4 Option code #162 and DHCPv6 Option
+       code #144.
+       (Gitlab #2536)
+
 2129.  [func]          andrei
        New statistics were added to keep track of leases that have their
        CLTT increased in memory and their expiration time left unchanged
index c83dc8b3f9a928c0445af46900186a78f7a3c046..b768a424dc75a3a527f3271b3df213c6b334136d 100644 (file)
@@ -1986,6 +1986,8 @@ types are given in :ref:`dhcp-types`.
    +----------------------------------------+------+---------------------------+-------------+-------------+
    | v4-portparams                          | 159  | record (uint8, psid)      | false       | false       |
    +----------------------------------------+------+---------------------------+-------------+-------------+
+   | v4-dnr                                 | 162  | binary                    | false       | false       |
+   +----------------------------------------+------+---------------------------+-------------+-------------+
    | option-6rd                             | 212  | record (uint8, uint8,     | true        | false       |
    |                                        |      | ipv6-address,             |             |             |
    |                                        |      | ipv4-address)             |             |             |
index d692f71bc18d12a2ceab691f0e46ff0b8de8ad45..c74dd9aaf6bedb1e63f4095fb279986677c9789d 100644 (file)
@@ -1768,6 +1768,9 @@ types are given in :ref:`dhcp-types`.
    +--------------------------+-----------------+-----------------+-----------------+
    | ipv6-address-andsf       | 143             | ipv6-address    | true            |
    +--------------------------+-----------------+-----------------+-----------------+
+   | v6-dnr                   | 144             | record (uint16, | false           |
+   |                          |                 | uint16, binary) |                 |
+   +--------------------------+-----------------+-----------------+-----------------+
 
 Options marked with (1) have option definitions, but the logic behind
 them is not implemented. That means that, technically, Kea knows how to
index 15ec7b50600e715ddcae9b181380a2f3a6707901..9a9470232e032e2b82452e4052a27bdad9c66359 100644 (file)
@@ -134,7 +134,7 @@ DnrInstance::DnrInstance(Option::Universe universe,
 }
 
 void
-DnrInstance::packAdn(util::OutputBuffer& buf) const {
+DnrInstance::packAdn(OutputBuffer& buf) const {
     if (!adn_) {
         // This should not happen since Encrypted DNS options are designed
         // to always include an authentication domain name.
@@ -150,7 +150,7 @@ DnrInstance::packAdn(util::OutputBuffer& buf) const {
 }
 
 void
-DnrInstance::packAddresses(util::OutputBuffer& buf) const {
+DnrInstance::packAddresses(OutputBuffer& buf) const {
     AddressContainer::const_iterator address = ip_addresses_.begin();
     while (address != ip_addresses_.end()) {
         buf.writeUint32(address->toUint32());
@@ -159,7 +159,7 @@ DnrInstance::packAddresses(util::OutputBuffer& buf) const {
 }
 
 void
-DnrInstance::packSvcParams(util::OutputBuffer& buf) const {
+DnrInstance::packSvcParams(OutputBuffer& buf) const {
     if (svc_params_length_ > 0) {
         buf.writeData(&(*svc_params_.begin()), svc_params_length_);
     }
@@ -175,7 +175,7 @@ DnrInstance::getAdnAsText() const {
 
 void
 DnrInstance::setAdn(const std::string& adn) {
-    std::string trimmed_adn = isc::util::str::trim(adn);
+    std::string trimmed_adn = str::trim(adn);
     if (trimmed_adn.empty()) {
         isc_throw(InvalidOptionDnrDomainName, "Mandatory Authentication Domain Name fully "
                                               "qualified domain-name must not be empty");
@@ -226,7 +226,7 @@ DnrInstance::unpackAdn(OptionBufferConstIter& begin, OptionBufferConstIter end)
 
 void
 DnrInstance::checkSvcParams(bool from_wire_data) {
-    std::string svc_params = isc::util::str::trim(svc_params_);
+    std::string svc_params = str::trim(svc_params_);
     if (svc_params.empty()) {
         isc_throw(InvalidOptionDnrSvcParams, "Provided Svc Params field is empty");
     }
@@ -249,16 +249,16 @@ DnrInstance::checkSvcParams(bool from_wire_data) {
     // SvcParams in presentation format MAY appear in any order, but keys MUST NOT be repeated.
 
     // Let's put all elements of a whitespace-separated list into a vector.
-    std::vector<std::string> tokens = isc::util::str::tokens(svc_params, " ");
+    std::vector<std::string> tokens = str::tokens(svc_params, " ");
 
     // Set of keys used to check if a key is not repeated.
     std::set<std::string> keys;
     // String sanitizer is used to check keys syntax.
-    util::str::StringSanitizerPtr sanitizer;
+    str::StringSanitizerPtr sanitizer;
     // SvcParamKeys are lower-case alphanumeric strings. Key names
     // contain 1-63 characters from the ranges "a"-"z", "0"-"9", and "-".
     std::string regex = "[^a-z0-9-]";
-    sanitizer.reset(new util::str::StringSanitizer(regex, ""));
+    sanitizer.reset(new str::StringSanitizer(regex, ""));
     // The service parameters MUST NOT include
     // "ipv4hint" or "ipv6hint" SvcParams as they are superseded by the
     // included IP addresses.
@@ -266,7 +266,7 @@ DnrInstance::checkSvcParams(bool from_wire_data) {
 
     // Now let's check each SvcParamKey=SvcParamValue pair.
     for (const std::string& token : tokens) {
-        std::vector<std::string> key_val = isc::util::str::tokens(token, "=");
+        std::vector<std::string> key_val = str::tokens(token, "=");
         if (key_val.size() > 2) {
             isc_throw(InvalidOptionDnrSvcParams, "Wrong Svc Params syntax - more than one "
                                                  "equals sign found in SvcParamKey=SvcParamValue "
index 2af6e51e0301f7ba09c49cce5ae4f4afc5cc347a..612ffecd9e659a00c2f6ae1e445018a2efc3f833 100644 (file)
@@ -8,20 +8,18 @@
 
 #include <dhcp/option4_dnr.h>
 
-#include <boost/scoped_ptr.hpp>
 #include <gtest/gtest.h>
 
 using namespace isc;
 using namespace isc::dhcp;
 using namespace isc::asiolink;
-using boost::scoped_ptr;
 
 namespace {
 
 // This test verifies constructor of the empty Option4Dnr class.
 TEST(Option4DnrTest, emptyCtor) {
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option4Dnr()));
     ASSERT_TRUE(option);
 
@@ -34,7 +32,7 @@ TEST(Option4DnrTest, emptyCtor) {
 // with adding ADN-only-mode DNR instance to option's DNR instances.
 TEST(Option4DnrTest, oneAdnOnlyModeInstance) {
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option4Dnr()));
     ASSERT_TRUE(option);
 
@@ -73,7 +71,7 @@ TEST(Option4DnrTest, oneAdnOnlyModeInstance) {
 // with adding multiple ADN-only-mode DNR instances to option's DNR instances.
 TEST(Option4DnrTest, multipleAdnOnlyModeInstances) {
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option4Dnr()));
     ASSERT_TRUE(option);
 
@@ -136,7 +134,7 @@ TEST(Option4DnrTest, multipleAdnOnlyModeInstances) {
 // 2. All fields included (IP addresses and service params also) DNR instance.
 TEST(Option4DnrTest, mixedDnrInstances) {
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option4Dnr()));
     ASSERT_TRUE(option);
 
@@ -196,7 +194,7 @@ TEST(Option4DnrTest, mixedDnrInstances) {
 // 1. ADN only mode
 TEST(Option4DnrTest, packOneAdnOnlyModeInstance) {
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option4Dnr()));
     ASSERT_TRUE(option);
 
@@ -237,7 +235,7 @@ TEST(Option4DnrTest, packOneAdnOnlyModeInstance) {
 // 3. ADN only mode
 TEST(Option4DnrTest, packMultipleAdnOnlyModeInstances) {
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option4Dnr()));
     ASSERT_TRUE(option);
 
@@ -297,7 +295,7 @@ TEST(Option4DnrTest, packMultipleAdnOnlyModeInstances) {
 // 2. All fields included (IP addresses and service params also).
 TEST(Option4DnrTest, packMixedDnrInstances) {
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option4Dnr()));
     ASSERT_TRUE(option);
 
@@ -364,7 +362,7 @@ TEST(Option4DnrTest, onWireDataCtor) {
     };
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option4Dnr(buf.begin(), buf.end())));
     ASSERT_TRUE(option);
 }
@@ -385,7 +383,7 @@ TEST(Option4DnrTest, unpackOneAdnOnly) {
     };
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option4Dnr(buf.begin(), buf.end())));
     ASSERT_TRUE(option);
 
@@ -441,7 +439,7 @@ TEST(Option4DnrTest, unpackOneDnrInstance) {
     };
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option4Dnr(buf.begin(), buf.end())));
     ASSERT_TRUE(option);
 
@@ -494,7 +492,7 @@ TEST(Option4DnrTest, unpackMixedDnrInstances) {
     };
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option4Dnr(buf.begin(), buf.end())));
     ASSERT_TRUE(option);
 
@@ -542,7 +540,7 @@ TEST(Option4DnrTest, unpackTruncatedDnrInstanceDataLen) {
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
 
     // Create option instance. Check that constructor throws an exception while doing unpack.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_THROW(option.reset(new Option4Dnr(buf.begin(), buf.end())), OutOfRange);
     ASSERT_FALSE(option);
 }
@@ -566,7 +564,7 @@ TEST(Option4DnrTest, unpackTruncatedDnrInstanceData) {
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
 
     // Create option instance. Check that constructor throws an exception while doing unpack.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_THROW(option.reset(new Option4Dnr(buf.begin(), buf.end())), OutOfRange);
     ASSERT_FALSE(option);
 }
@@ -590,7 +588,7 @@ TEST(Option4DnrTest, unpackTruncatedAdn) {
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
 
     // Create option instance. Check that constructor throws an exception while doing unpack.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_THROW(option.reset(new Option4Dnr(buf.begin(), buf.end())), OpaqueDataTupleError);
     ASSERT_FALSE(option);
 }
@@ -614,7 +612,7 @@ TEST(Option4DnrTest, unpackInvalidFqdnAdn) {
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
 
     // Create option instance. Check that constructor throws an exception while doing unpack.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_THROW(option.reset(new Option4Dnr(buf.begin(), buf.end())), InvalidOptionDnrDomainName);
     ASSERT_FALSE(option);
 }
@@ -637,7 +635,7 @@ TEST(Option4DnrTest, unpackNoFqdnAdn) {
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
 
     // Create option instance. Check that constructor throws an exception while doing unpack.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_THROW(option.reset(new Option4Dnr(buf.begin(), buf.end())), InvalidOptionDnrDomainName);
     ASSERT_FALSE(option);
 }
@@ -665,7 +663,7 @@ TEST(Option4DnrTest, unpackTruncatedIpAddress) {
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
 
     // Create option instance. Check that constructor throws an exception while doing unpack.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_THROW(option.reset(new Option4Dnr(buf.begin(), buf.end())), OpaqueDataTupleError);
     ASSERT_FALSE(option);
 }
@@ -692,7 +690,7 @@ TEST(Option4DnrTest, unpackNoIpAddress) {
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
 
     // Create option instance. Check that constructor throws an exception while doing unpack.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_THROW(option.reset(new Option4Dnr(buf.begin(), buf.end())), OutOfRange);
     ASSERT_FALSE(option);
 }
@@ -721,7 +719,7 @@ TEST(Option4DnrTest, unpackIpAddressNon4Modulo) {
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
 
     // Create option instance. Check that constructor throws an exception while doing unpack.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_THROW(option.reset(new Option4Dnr(buf.begin(), buf.end())), OutOfRange);
     ASSERT_FALSE(option);
 }
@@ -751,7 +749,7 @@ TEST(Option4DnrTest, unpackvcParamsInvalidCharKey) {
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
 
     // Create option instance. Check that constructor throws an exception while doing unpack.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_THROW(option.reset(new Option4Dnr(buf.begin(), buf.end())), InvalidOptionDnrSvcParams);
     ASSERT_FALSE(option);
 }
@@ -760,7 +758,7 @@ TEST(Option4DnrTest, unpackvcParamsInvalidCharKey) {
 // toText method is correctly formatted.
 TEST(Option4DnrTest, toText) {
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option4Dnr> option;
+    Option4DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option4Dnr()));
     ASSERT_TRUE(option);
 
index 3868c8384f93175659bed6e52651fe97fa4c6769..a6e616ffb1123a85b9a294f0a2d47b0a65141ea9 100644 (file)
@@ -8,12 +8,10 @@
 
 #include <dhcp/option6_dnr.h>
 
-#include <boost/scoped_ptr.hpp>
 #include <gtest/gtest.h>
 
 using namespace isc;
 using namespace isc::dhcp;
-using boost::scoped_ptr;
 
 namespace {
 
@@ -33,7 +31,7 @@ TEST(Option6DnrTest, onWireCtorAdnOnlyMode) {
 
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option6Dnr(buf.begin(), buf.end())));
     ASSERT_TRUE(option);
 
@@ -73,7 +71,7 @@ TEST(Option6DnrTest, onWireCtorDataTruncated) {
 
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
     // Create option instance. Check that constructor throws OutOfRange exception.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(buf.begin(), buf.end())), OutOfRange);
     ASSERT_FALSE(option);
 }
@@ -90,7 +88,7 @@ TEST(Option6DnrTest, onWireCtorOnlyWhitespaceFqdn) {
 
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
     // Create option instance. Check that constructor throws InvalidOptionDnrDomainName exception.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(buf.begin(), buf.end())), InvalidOptionDnrDomainName);
     ASSERT_FALSE(option);
 }
@@ -108,7 +106,7 @@ TEST(Option6DnrTest, onWireCtorNoAdnFqdn) {
     // Create option instance. Encrypted DNS options are designed to ALWAYS include
     // an authentication domain name, so check that constructor throws
     // InvalidOptionDnrDomainName exception.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(buf.begin(), buf.end())), InvalidOptionDnrDomainName);
     ASSERT_FALSE(option);
 }
@@ -125,7 +123,7 @@ TEST(Option6DnrTest, onWireCtorTruncatedFqdn) {
 
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
     // Create option instance. Check that constructor throws OpaqueDataTupleError exception.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(buf.begin(), buf.end())), OpaqueDataTupleError);
     ASSERT_FALSE(option);
 }
@@ -145,7 +143,7 @@ TEST(Option6DnrTest, onWireCtorAddrLenTruncated) {
 
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
     // Create option instance. Check that constructor throws OutOfRange exception.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(buf.begin(), buf.end())), OutOfRange);
     ASSERT_FALSE(option);
 }
@@ -167,7 +165,7 @@ TEST(Option6DnrTest, onWireCtorAddrLenZero) {
     // Create option instance. Check that constructor throws OutOfRange exception.
     // If additional data is supplied (i.e. not ADN only mode),
     // the option includes at least one valid IP address.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(buf.begin(), buf.end())), OutOfRange);
     ASSERT_FALSE(option);
 }
@@ -187,7 +185,7 @@ TEST(Option6DnrTest, onWireCtorAddrLenNot16Modulo) {
 
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
     // Create option instance. Check that constructor throws OutOfRange exception.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(buf.begin(), buf.end())), OutOfRange);
     ASSERT_FALSE(option);
 }
@@ -213,7 +211,7 @@ TEST(Option6DnrTest, onWireCtorValidIpV6Addresses) {
 
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option6Dnr(buf.begin(), buf.end())));
     ASSERT_TRUE(option);
 
@@ -268,7 +266,7 @@ TEST(Option6DnrTest, onWireCtorTruncatedIpV6Addresses) {
 
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
     // Create option instance. Check that constructor throws OutOfRange exception.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(buf.begin(), buf.end())), OutOfRange);
     ASSERT_FALSE(option);
 }
@@ -291,7 +289,7 @@ TEST(Option6DnrTest, onWireCtorSvcParamsIncluded) {
 
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option6Dnr(buf.begin(), buf.end())));
     ASSERT_TRUE(option);
 
@@ -344,7 +342,7 @@ TEST(Option6DnrTest, onWireCtorSvcParamsInvalidCharKey) {
 
     OptionBuffer buf(buf_data, buf_data + sizeof(buf_data));
     // Create option instance. Check that constructor throws InvalidOptionDnrSvcParams exception.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(buf.begin(), buf.end())), InvalidOptionDnrSvcParams);
     ASSERT_FALSE(option);
 }
@@ -357,7 +355,7 @@ TEST(Option6DnrTest, adnOnlyModeCtor) {
     const std::string adn = "myhost.example.com.";
 
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option6Dnr(service_priority, adn)));
     ASSERT_TRUE(option);
 
@@ -393,7 +391,7 @@ TEST(Option6DnrTest, adnOnlyModeCtorNoFqdn) {
     const std::string adn;  // invalid empty ADN
 
     // Create option instance. Check that constructor throws.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(service_priority, adn)), InvalidOptionDnrDomainName);
     ASSERT_FALSE(option);
 }
@@ -410,7 +408,7 @@ TEST(Option6DnrTest, allFieldsCtor) {
     const std::string svc_params = "alpn";
 
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option6Dnr(service_priority, adn, addresses, svc_params)));
     ASSERT_TRUE(option);
 
@@ -449,7 +447,7 @@ TEST(Option6DnrTest, allFieldsCtorNoIpAddress) {
     const std::string svc_params = "alpn";
 
     // Create option instance. Check that constructor throws.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(service_priority, adn, addresses, svc_params)),
                  OutOfRange);
     ASSERT_FALSE(option);
@@ -467,7 +465,7 @@ TEST(Option6DnrTest, svcParamsTwoEqualSignsPerParam) {
     const std::string svc_params = "key123=val1=val2 key234";  // invalid svc param - 2 equal signs
 
     // Create option instance. Check that constructor throws.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(service_priority, adn, addresses, svc_params)),
                  InvalidOptionDnrSvcParams);
     ASSERT_FALSE(option);
@@ -485,7 +483,7 @@ TEST(Option6DnrTest, svcParamsForbiddenKey) {
     const std::string svc_params = "key123=val1 ipv6hint";  // forbidden svc param key - ipv6hint
 
     // Create option instance. Check that constructor throws.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(service_priority, adn, addresses, svc_params)),
                  InvalidOptionDnrSvcParams);
     ASSERT_FALSE(option);
@@ -503,7 +501,7 @@ TEST(Option6DnrTest, svcParamsKeyRepeated) {
     const std::string svc_params = "key123=val1 key234 key123";  // svc param key key123 repeated
 
     // Create option instance. Check that constructor throws.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(service_priority, adn, addresses, svc_params)),
                  InvalidOptionDnrSvcParams);
     ASSERT_FALSE(option);
@@ -523,7 +521,7 @@ TEST(Option6DnrTest, svcParamsKeyTooLong) {
                                    "veryveryveryveryvlongkey";  // svc param key longer than 63
 
     // Create option instance. Check that constructor throws.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(service_priority, adn, addresses, svc_params)),
                  InvalidOptionDnrSvcParams);
     ASSERT_FALSE(option);
@@ -541,7 +539,7 @@ TEST(Option6DnrTest, svcParamsKeyHasInvalidChar) {
     const std::string svc_params = "alpn=h2 NOT_ALLOWED_CHARS_KEY=123"; // svc param key has forbidden chars
 
     // Create option instance. Check that constructor throws.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_THROW(option.reset(new Option6Dnr(service_priority, adn, addresses, svc_params)),
                  InvalidOptionDnrSvcParams);
     ASSERT_FALSE(option);
@@ -558,7 +556,7 @@ TEST(Option6DnrTest, toText) {
     const std::string svc_params = "alpn";
 
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option6Dnr(service_priority, adn, addresses, svc_params)));
     ASSERT_TRUE(option);
 
@@ -577,7 +575,7 @@ TEST(Option6DnrTest, packAdnOnlyMode) {
     const std::string adn = "myhost.example.com.";
 
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option6Dnr(service_priority, adn)));
     ASSERT_TRUE(option);
 
@@ -616,7 +614,7 @@ TEST(Option6DnrTest, pack) {
     const std::string svc_params = "alpn";
 
     // Create option instance. Check that constructor doesn't throw.
-    scoped_ptr<Option6Dnr> option;
+    Option6DnrPtr option;
     EXPECT_NO_THROW(option.reset(new Option6Dnr(service_priority, adn, addresses, svc_params)));
     ASSERT_TRUE(option);