From: Piotrek Zadroga Date: Thu, 20 Apr 2023 13:59:11 +0000 (+0200) Subject: [#2536] Updating Changelog and docs X-Git-Tag: Kea-2.3.8~169 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=77e7200d4a0afac34845b7c6bb4cacdd1e77a64d;p=thirdparty%2Fkea.git [#2536] Updating Changelog and docs --- diff --git a/ChangeLog b/ChangeLog index 10d5ce9f02..e82f86c345 100644 --- 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 diff --git a/doc/sphinx/arm/dhcp4-srv.rst b/doc/sphinx/arm/dhcp4-srv.rst index c83dc8b3f9..b768a424dc 100644 --- a/doc/sphinx/arm/dhcp4-srv.rst +++ b/doc/sphinx/arm/dhcp4-srv.rst @@ -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) | | | diff --git a/doc/sphinx/arm/dhcp6-srv.rst b/doc/sphinx/arm/dhcp6-srv.rst index d692f71bc1..c74dd9aaf6 100644 --- a/doc/sphinx/arm/dhcp6-srv.rst +++ b/doc/sphinx/arm/dhcp6-srv.rst @@ -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 diff --git a/src/lib/dhcp/option4_dnr.cc b/src/lib/dhcp/option4_dnr.cc index 15ec7b5060..9a9470232e 100644 --- a/src/lib/dhcp/option4_dnr.cc +++ b/src/lib/dhcp/option4_dnr.cc @@ -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 tokens = isc::util::str::tokens(svc_params, " "); + std::vector tokens = str::tokens(svc_params, " "); // Set of keys used to check if a key is not repeated. std::set 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 key_val = isc::util::str::tokens(token, "="); + std::vector 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 " diff --git a/src/lib/dhcp/tests/option4_dnr_unittest.cc b/src/lib/dhcp/tests/option4_dnr_unittest.cc index 2af6e51e03..612ffecd9e 100644 --- a/src/lib/dhcp/tests/option4_dnr_unittest.cc +++ b/src/lib/dhcp/tests/option4_dnr_unittest.cc @@ -8,20 +8,18 @@ #include -#include #include 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 option; + Option4DnrPtr option; EXPECT_NO_THROW(option.reset(new Option4Dnr())); ASSERT_TRUE(option); diff --git a/src/lib/dhcp/tests/option6_dnr_unittest.cc b/src/lib/dhcp/tests/option6_dnr_unittest.cc index 3868c8384f..a6e616ffb1 100644 --- a/src/lib/dhcp/tests/option6_dnr_unittest.cc +++ b/src/lib/dhcp/tests/option6_dnr_unittest.cc @@ -8,12 +8,10 @@ #include -#include #include 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 option; + Option6DnrPtr option; EXPECT_NO_THROW(option.reset(new Option6Dnr(service_priority, adn, addresses, svc_params))); ASSERT_TRUE(option);