diff --git a/doc/guide/bind10-guide.xml b/doc/guide/bind10-guide.xml index b1fc503301..9d77dc5281 100644 --- a/doc/guide/bind10-guide.xml +++ b/doc/guide/bind10-guide.xml @@ -3013,7 +3013,7 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string
Configuring DHCPv4 for DDNS - As mentioned earlier, DHCPv4 can be configured to generate requests to the + As mentioned earlier, b10-dhcp4 can be configured to generate requests to the DHCP-DDNS server to update DNS entries. These requests are known as NameChangeRequests or NCRs. Each NCR contains the following information: @@ -3029,7 +3029,7 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string The parameters for controlling the generation of NCRs for submission to D2 - are contained in the "dhcp-ddns" section of the DHCPv4 server + are contained in the "dhcp-ddns" section of the b10-dhcp4 server configuration. The default values for this section appears as follows: > config show Dhcp4/dhcp-ddns @@ -3049,7 +3049,7 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string - The "enable-updates" parameter determines whether or not DHCPv4 will + The "enable-updates" parameter determines whether or not b10-dhcp4 will generate NCRs. By default, this value is false hence DDNS updates are disabled. To enable DDNS updates set this value to true: @@ -3060,28 +3060,27 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string
DHCP-DDNS Server Connectivity - In order for NCRs to reach the D2 server, DHCPv4 must be able - to communicate with it. DHCPv4 uses the following configuration + In order for NCRs to reach the D2 server, b10-dhcp4 must be able + to communicate with it. b10-dhcp4 uses the following configuration parameters to control how it communications with D2: server-ip - IP address on which D2 listens for requests. The default is the local loopback interface at address 127.0.0.1. (You may specifiy either an IPv4 or IPv6 address.) - or IPv6 address.) server-port - port on which D2 listens for requests. The default value is 53001. - sender-ip - IP address which DHCPv4 should use to send requests to D2. - The default value is blank which instructs DHCPv4 to select a suitable + sender-ip - IP address which b10-dhcp4 should use to send requests to D2. + The default value is blank which instructs b10-dhcp4 to select a suitable address. - sender-port - port which DHCPv4 should use to send requests to D2. The - default value of 0 instructs DHCPv4 to select suitable port. + sender-port - port which b10-dhcp4 should use to send requests to D2. The + default value of 0 instructs b10-dhcp4 to select suitable port. ncr-format - Socket protocol use when sending requests to D2. Currently @@ -3098,11 +3097,11 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string uncontrollably if they are being generated faster than they can be delivered. If the number of requests queued for transmission reaches this value, DDNS updating will be turned off until the queue backlog has - been sufficiently reduced. The intent is allow the DHCPv4 server to + been sufficiently reduced. The intent is allow the b10-dhcp4 server to continue lease operations. The default value is 1024. - By default, D2 is assumed to running on the same machine as DHCPv4, and + By default, D2 is assumed to running on the same machine as b10-dhcp4, and all of the default values mentioned above should be sufficient. If, however, D2 has been configured to listen on a different address or port, these values must altered accordingly. For example, if D2 has been @@ -3116,19 +3115,19 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string
- When does the DHCPv4 server generate DDNS requests? - DHCPv4 follows the behavior prescribed for DHCP servers in RFC 4702. - It is important to keep in mind that DHCPv4 provides the initial decision + When does the b10-dhcp4 server generate DDNS requests? + b10-dhcp4 follows the behavior prescribed for DHCP servers in RFC 4702. + It is important to keep in mind that b10-dhcp4 provides the initial decision making of when and what to update and forwards that information to D2 in the form of NCRs. Carrying out the actual DNS updates and dealing with such things as conflict resolution are the purview of D2 (). - This section describes when DHCPv4 will generate NCRs and the + This section describes when b10-dhcp4 will generate NCRs and the configuration parameters that can be used to influence this decision. It assumes that the "enable-updates" parameter is true. - In general, DHCPv4 will generate DDNS update requests when: + In general, b10-dhcp4 will generate DDNS update requests when: A new lease is granted in response to a DHCP REQUEST @@ -3149,10 +3148,10 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string involved and is discussed next. - When a new lease is granted, the DHCPv4 server will generate a DDNS + When a new lease is granted, b10-dhcp4 will generate a DDNS update request if the DHCP REQUEST contains either the FQDN option (code 81) or the Host Name option (code 12). If both are present, - the server will use the FQDN option. By default the DHCPv4 server + the server will use the FQDN option. By default b10-dhcp4 will respect the FQDN N and S flags specified by the client as shown in the following table: @@ -3198,11 +3197,11 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string The first row in the table above represents "client delegation". Here the DHCP client states that it intends to do the forward DNS updates and - the server should do the reverse updates. By default, DHCPv4 will honor + the server should do the reverse updates. By default, b10-dhcp4 will honor the client's wishes and generate a DDNS request to D2 to update only reverse DNS data. The parameter, "override-client-update", can be used to instruct the server to override client delegation requests. When - this parameter is true, DHCPv4 will disregard requests for client + this parameter is true, b10-dhcp4 will disregard requests for client delegation and generate a DDNS request to update both forward and reverse DNS data. In this case, the N-S-O flags in the server's response to the client will be 0-1-1 respectively. @@ -3210,7 +3209,7 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string (Note that the flag combination N=1, S=1 is prohibited according to RFC 4702. If such a combination is received from the client, the packet - will be dropped by the DHCPv4 server.) + will be dropped by the b10-dhcp4.) To override client delegation, issue the following commands: @@ -3223,7 +3222,7 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string The third row in the table above describes the case in which the client requests that no DNS updates be done. The parameter, "override-no-update", can be used to instruct the server to disregard the client's wishes. When - this parameter is true, DHCPv4 will generate DDNS update request to D2 + this parameter is true, b10-dhcp4 will generate DDNS update request to D2 even if the client requests no updates be done. The N-S-O flags in the server's response to the client will be 0-1-1. @@ -3235,7 +3234,7 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string > config commit - DHCPv4 will always generate DDNS update requests if the client request + b10-dhcp4 will always generate DDNS update requests if the client request only contains the Host Name option. In addition it will include an FQDN option in the response to the client with the FQDN N-S-O flags set to 0-1-0 respectively. The domain name portion of the FQDN option will be @@ -3243,9 +3242,9 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string
- DHCPv4 name generation for DDNS update requests + b10-dhcp4 name generation for DDNS update requests Each NameChangeRequest must of course include the fully qualified domain - name whose DNS entries are to be affected. DHCPv4 can be configured to + name whose DNS entries are to be affected. b10-dhcp4 can be configured to supply a portion or all of that name based upon what it receives from the client in the DHCP REQUEST. @@ -3274,7 +3273,7 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string - To instruct DHCPv4 to always generate the FQDN for a client, set the + To instruct b10-dhcp4 to always generate the FQDN for a client, set the parameter "replace-client-name" to true as follows: @@ -3302,7 +3301,7 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string
- When generating a name, DHCPv4 will construct name of the format: + When generating a name, b10-dhcp4 will construct name of the format: [generated-prefix]-[address-text].[qualifying-suffix]. @@ -3318,7 +3317,7 @@ Dhcp4/dhcp-ddns/qualifying-suffix "example.com" string
- +
Server Identifier in DHCPv4 @@ -4599,7 +4598,7 @@ should include options from the isc option space:
Configuring DHCPv6 for DDNS - As mentioned earlier, DHCPv6 can be configured to generate requests to + As mentioned earlier, b10-dhcp6 can be configured to generate requests to the DHCP-DDNS server (referred to here as the "D2" server) to update DNS entries. These requests are known as NameChangeRequests or NCRs. Each NCR contains the following information: @@ -4616,7 +4615,7 @@ should include options from the isc option space: The parameters controlling the generation of NCRs for submission to D2 - are contained in the "dhcp-ddns" section of the DHCPv6 server + are contained in the "dhcp-ddns" section of b10-dhcp6 configuration. The default values for this section appears as follows: > config show Dhcp6/dhcp-ddns @@ -4636,7 +4635,7 @@ Dhcp6/dhcp-ddns/qualifying-suffix "example.com" string - The "enable-updates" parameter determines whether or not DHCPv6 will + The "enable-updates" parameter determines whether or not b10-dhcp6 will generate NCRs. By default, this value is false hence DDNS updates are disabled. To enable DDNS updates set this value to true as follows: @@ -4647,28 +4646,27 @@ Dhcp6/dhcp-ddns/qualifying-suffix "example.com" string
DHCP-DDNS Server Connectivity - In order for NCRs to reach the D2 server, DHCPv6 must be able - to communicate with it. DHCPv6 uses the following configuration + In order for NCRs to reach the D2 server, b10-dhcp6 must be able + to communicate with it. b10-dhcp6 uses the following configuration parameters to control how it communications with D2: server-ip - IP address on which D2 listens for requests. The default is the local loopback interface at address 127.0.0.1. (You may specifiy either an IPv4 or IPv6 address.) - or IPv6 address.) server-port - port on which D2 listens for requests. The default value is 53001. - sender-ip - IP address which DHCPv6 should use to send requests to D2. - The default value is blank which instructs DHCPv6 to select a suitable + sender-ip - IP address which b10-dhcp6 should use to send requests to D2. + The default value is blank which instructs b10-dhcp6 to select a suitable address. - sender-port - port which DHCPv6 should use to send requests to D2. The - default value of 0 instructs DHCPv6 to select suitable port. + sender-port - port which b10-dhcp6 should use to send requests to D2. The + default value of 0 instructs b10-dhcp6 to select suitable port. ncr-format - Socket protocol use when sending requests to D2. Currently @@ -4685,11 +4683,11 @@ Dhcp6/dhcp-ddns/qualifying-suffix "example.com" string uncontrollably if they are being generated faster than they can be delivered. If the number of requests queued for transmission reaches this value, DDNS updating will be turned off until the queue backlog has - been sufficiently reduced. The intent is allow the DHCPv6 server to + been sufficiently reduced. The intent is allow b10-dhcp6 to continue lease operations. The default value is 1024. - By default, D2 is assumed to running on the same machine as DHCPv6, and + By default, D2 is assumed to running on the same machine as b10-dhcp6, and all of the default values mentioned above should be sufficient. If, however, D2 has been configured to listen on a different address or port, these values must altered accordingly. For example, if D2 has been @@ -4703,28 +4701,28 @@ Dhcp6/dhcp-ddns/qualifying-suffix "example.com" string
- When does DHCPv6 generate DDNS request - DHCPv6 follows the behavior prescribed for DHCP servers in RFC 4704. - It is important to keep in mind that DHCPv6 provides the initial decision + When does b10-dhcp6 generate DDNS request + b10-dhcp6 follows the behavior prescribed for DHCP servers in RFC 4704. + It is important to keep in mind that b10-dhcp6 provides the initial decision making of when and what to update and forwards that information to D2 in the form of NCRs. Carrying out the actual DNS updates and dealing with such things as conflict resolution are the purview of D2 (). - This section describes when DHCPv6 will generate NCRs and the + This section describes when b10-dhcp6 will generate NCRs and the configuration parameters that can be used to influence this decision. It assumes that the "enable-updates" parameter is true. - Currently the interface between DHCPv6 and D2 only supports requests + Currently the interface between b10-dhcp6 and D2 only supports requests which update DNS entries for a single IP address. If a lease grants - more than one address, DHCPv6 will create the DDNS update request for + more than one address, b10-dhcp6 will create the DDNS update request for only the first of these addresses. Support for multiple address mappings may be provided in a future release. - In general, DHCPv6 will generate DDNS update requests when: + In general, b10-dhcp6 will generate DDNS update requests when: A new lease is granted in response to a DHCP REQUEST @@ -4745,8 +4743,8 @@ Dhcp6/dhcp-ddns/qualifying-suffix "example.com" string discussed next. - DHCPv6 will generate a DDNS update request only if the DHCP REQUEST - contains the FQDN option (code 39). By default the DHCPv6 server will + b10-dhcp6 will generate a DDNS update request only if the DHCP REQUEST + contains the FQDN option (code 39). By default b10-dhcp6 will respect the FQDN N and S flags specified by the client as shown in the following table: @@ -4792,11 +4790,11 @@ Dhcp6/dhcp-ddns/qualifying-suffix "example.com" string The first row in the table above represents "client delegation". Here the DHCP client states that it intends to do the forward DNS updates and - the server should do the reverse updates. By default, DHCPv6 will honor + the server should do the reverse updates. By default, b10-dhcp6 will honor the client's wishes and generate a DDNS request to D2 to update only reverse DNS data. The parameter, "override-client-update", can be used to instruct the server to override client delegation requests. When - this parameter is true, DHCPv6 will disregard requests for client + this parameter is true, b10-dhcp6 will disregard requests for client delegation and generate a DDNS request to update both forward and reverse DNS data. In this case, the N-S-O flags in the server's response to the client will be 0-1-1 respectively. @@ -4804,7 +4802,7 @@ Dhcp6/dhcp-ddns/qualifying-suffix "example.com" string (Note that the flag combination N=1, S=1 is prohibited according to RFC 4702. If such a combination is received from the client, the packet - will be dropped by the DHCPv6 server.) + will be dropped by b10-dhcp6.) To override client delegation, issue the following commands: @@ -4817,7 +4815,7 @@ Dhcp6/dhcp-ddns/qualifying-suffix "example.com" string The third row in the table above describes the case in which the client requests that no DNS updates be done. The parameter, "override-no-update", can be used to instruct the server to disregard the client's wishes. When - this parameter is true, DHCPv6 will generate DDNS update request to D2 + this parameter is true, b10-dhcp6 will generate DDNS update request to D2 even if the client requests no updates be done. The N-S-O flags in the server's response to the client will be 0-1-1. @@ -4830,9 +4828,9 @@ Dhcp6/dhcp-ddns/qualifying-suffix "example.com" string
- DHCPv6 name generation for DDNS update requests + b10-dhcp6 name generation for DDNS update requests Each NameChangeRequest must of course include the fully qualified domain - name whose DNS entries are to be affected. DHCPv6 can be configured to + name whose DNS entries are to be affected. b10-dhcp6 can be configured to supply a portion or all of that name based upon what it receives from the client in the DHCP REQUEST. @@ -4860,7 +4858,7 @@ Dhcp6/dhcp-ddns/qualifying-suffix "example.com" string - To instruct DHCPv6 to always generate a FQDN, set the parameter + To instruct b10-dhcp6 to always generate a FQDN, set the parameter "replace-client-name" to true: @@ -4888,7 +4886,7 @@ Dhcp6/dhcp-ddns/qualifying-suffix "example.com" string
- When qualifying a partial name, DHCPv6 will construct a name with the + When qualifying a partial name, b10-dhcp6 will construct a name with the format: @@ -4903,7 +4901,7 @@ Dhcp6/dhcp-ddns/qualifying-suffix "example.com" string some-computer.example.com. - When generating a the entire name, DHCPv6 will construct name of the + When generating a the entire name, b10-dhcp6 will construct name of the format: @@ -5133,9 +5131,9 @@ Dhcp6/renew-timer 1000 integer (default) The DHCP-DDNS Server - The DHCP-DDNS Server (known informally as D2) conducts the client side of + The DHCP-DDNS Server (b10-dhcp-ddns, known informally as D2) conducts the client side of the DDNS protocol (defined in RFC 2136) on behalf of the DHCPv4 and DHCPv6 - servers. The DHCP servers construct + servers (b10-dhcp4 and b10-dhcp6 respectively). The DHCP servers construct DDNS update requests, known as NameChangeRequests (NCRs), based upon DHCP lease change events and then post these to D2. D2 attempts to match each such request to the appropriate DNS server(s) and carry out the diff --git a/src/bin/dhcp4/tests/d2_unittest.cc b/src/bin/dhcp4/tests/d2_unittest.cc index 86caa23b3d..baac41fdb8 100644 --- a/src/bin/dhcp4/tests/d2_unittest.cc +++ b/src/bin/dhcp4/tests/d2_unittest.cc @@ -88,9 +88,11 @@ Dhcp4SrvD2Test::reset() { void Dhcp4SrvD2Test::configureD2(bool enable_d2, const bool exp_result, - const std::string& ip_address, - const uint32_t port, - const uint32_t sender_port) { + const std::string& server_ip, + const size_t port, + const std::string& sender_ip, + const size_t sender_port, + const size_t max_queue_size) { std::ostringstream config; config << "{ \"interfaces\": [ \"*\" ]," @@ -101,9 +103,11 @@ Dhcp4SrvD2Test::configureD2(bool enable_d2, const bool exp_result, " \"subnet\": \"192.0.2.0/24\" } ]," " \"dhcp-ddns\" : {" " \"enable-updates\" : " << (enable_d2 ? "true" : "false") << ", " - " \"server-ip\" : \"" << ip_address << "\", " + " \"server-ip\" : \"" << server_ip << "\", " " \"server-port\" : " << port << ", " + " \"sender-ip\" : \"" << sender_ip << "\", " " \"sender-port\" : " << sender_port << ", " + " \"max-queue-size\" : " << max_queue_size << ", " " \"ncr-protocol\" : \"UDP\", " " \"ncr-format\" : \"JSON\", " " \"always-include-fqdn\" : true, " @@ -167,10 +171,10 @@ TEST_F(Dhcp4SrvD2Test, enableDisable) { ASSERT_FALSE(mgr.amSending()); } -// Tests Dhcp4 server's ability to correctly handle a flawed dhcp-ddns configuration. -// It does so by first enabling updates by submitting a valid configuration and then -// ensuring they remain on after submitting a flawed configuration. -// and then invoking its startD2() method. +// Tests Dhcp4 server's ability to correctly handle a flawed dhcp-ddns +// configuration. It does so by first enabling updates by submitting a valid +// configuration and then ensuring they remain on after submitting a flawed +// configuration and then invoking its startD2() method. TEST_F(Dhcp4SrvD2Test, badConfig) { // Grab the manager and verify that be default ddns is off // and a sender was not started. @@ -297,7 +301,8 @@ TEST_F(Dhcp4SrvD2Test, forceUDPSendFailure) { // Using server address of 0.0.0.0/0 should induce failure on send. // Pass in a non-zero sender port to avoid validation error when // server-ip/port are same as sender-ip/port - ASSERT_NO_FATAL_FAILURE(configureD2(true, SHOULD_PASS, "0.0.0.0", 0, 53001)); + ASSERT_NO_FATAL_FAILURE(configureD2(true, SHOULD_PASS, "0.0.0.0", 0, + "0.0.0.0", 53001)); ASSERT_TRUE(mgr.ddnsEnabled()); ASSERT_NO_THROW(srv_.startD2()); ASSERT_TRUE(mgr.amSending()); diff --git a/src/bin/dhcp4/tests/d2_unittest.h b/src/bin/dhcp4/tests/d2_unittest.h index 822a11c0f7..7de6b8fbea 100644 --- a/src/bin/dhcp4/tests/d2_unittest.h +++ b/src/bin/dhcp4/tests/d2_unittest.h @@ -77,13 +77,17 @@ public: /// /// @param enable_updates value to assign to the enable-updates parameter /// @param exp_result indicates if configuration should pass or fail - /// @param ip_address IP address for the D2 server + /// @param server_ip IP address for the D2 server /// @param port port for the D2 server + /// @param sender_ip NCR sender's IP address /// @param sender_port NCR sender port + /// @param max_queue_size maximum number of NCRs allowed in sender's queue void configureD2(bool enable_updates, bool exp_result = SHOULD_PASS, - const std::string& ip_address = "127.0.0.1", - const uint32_t port = 53001, - const uint32_t sender_port = 0); + const std::string& server_ip = "127.0.0.1", + const size_t port = 53001, + const std::string& sender_ip = "0.0.0.0", + const size_t sender_port = 0, + const size_t max_queue_size = 1024); /// @brief Configures the server with the given configuration /// diff --git a/src/bin/dhcp6/tests/d2_unittest.cc b/src/bin/dhcp6/tests/d2_unittest.cc index 3529e93c92..de140d6149 100644 --- a/src/bin/dhcp6/tests/d2_unittest.cc +++ b/src/bin/dhcp6/tests/d2_unittest.cc @@ -90,9 +90,11 @@ Dhcp6SrvD2Test::reset() { void Dhcp6SrvD2Test::configureD2(bool enable_d2, const bool exp_result, - const std::string& ip_address, - const uint32_t port, - const uint32_t sender_port) { + const std::string& server_ip, + const size_t port, + const std::string& sender_ip, + const size_t sender_port, + const size_t max_queue_size) { std::ostringstream config; config << "{ \"interfaces\": [ \"*\" ]," @@ -105,9 +107,11 @@ Dhcp6SrvD2Test::configureD2(bool enable_d2, const bool exp_result, " \"subnet\": \"2001:db8:1::/64\" } ]," " \"dhcp-ddns\" : {" " \"enable-updates\" : " << (enable_d2 ? "true" : "false") << ", " - " \"server-ip\" : \"" << ip_address << "\", " + " \"server-ip\" : \"" << server_ip << "\", " " \"server-port\" : " << port << ", " + " \"sender-ip\" : \"" << sender_ip << "\", " " \"sender-port\" : " << sender_port << ", " + " \"max-queue-size\" : " << max_queue_size << ", " " \"ncr-protocol\" : \"UDP\", " " \"ncr-format\" : \"JSON\", " " \"always-include-fqdn\" : true, " @@ -171,10 +175,10 @@ TEST_F(Dhcp6SrvD2Test, enableDisable) { ASSERT_FALSE(mgr.amSending()); } -// Tests Dhcp6 server's ability to correctly handle a flawed dhcp-ddns configuration. -// It does so by first enabling updates by submitting a valid configuration and then -// ensuring they remain on after submitting a flawed configuration. -// and then invoking its startD2() method. +// Tests Dhcp6 server's ability to correctly handle a flawed dhcp-ddns +// configuration. It does so by first enabling updates by submitting a valid +// configuration and then ensuring they remain on after submitting a flawed +// configuration and then invoking its startD2() method. TEST_F(Dhcp6SrvD2Test, badConfig) { // Grab the manager and verify that be default ddns is off // and a sender was not started. @@ -246,7 +250,7 @@ TEST_F(Dhcp6SrvD2Test, differentConfig) { ASSERT_TRUE(mgr.amSending()); // Now enable it on a different port. - ASSERT_NO_FATAL_FAILURE(configureD2(true, SHOULD_PASS, "127.0.0.1", 54001)); + ASSERT_NO_FATAL_FAILURE(configureD2(true, SHOULD_PASS, "::1", 54001)); // Configuration was altered, so ddns should still enabled but not sending. ASSERT_TRUE(mgr.ddnsEnabled()); @@ -301,7 +305,8 @@ TEST_F(Dhcp6SrvD2Test, forceUDPSendFailure) { // Using server address of 0.0.0.0/0 should induce failure on send. // Pass in a non-zero sender port to avoid validation error when // server-ip/port are same as sender-ip/port - ASSERT_NO_FATAL_FAILURE(configureD2(true, SHOULD_PASS, "0.0.0.0", 0, 53001)); + ASSERT_NO_FATAL_FAILURE(configureD2(true, SHOULD_PASS, "::", 0, + "::", 53001)); ASSERT_TRUE(mgr.ddnsEnabled()); ASSERT_NO_THROW(srv_.startD2()); ASSERT_TRUE(mgr.amSending()); diff --git a/src/bin/dhcp6/tests/d2_unittest.h b/src/bin/dhcp6/tests/d2_unittest.h index 6eeea6d573..8a77c9bc70 100644 --- a/src/bin/dhcp6/tests/d2_unittest.h +++ b/src/bin/dhcp6/tests/d2_unittest.h @@ -76,14 +76,17 @@ public: /// parameters given and passes it into the server's configuration handler. /// /// @param enable_updates value to assign to the enable-updates parameter - /// @param exp_result indicates if configuration should pass or fail - /// @param ip_address IP address for the D2 server + /// @param server_ip IP address for the D2 server /// @param port port for the D2 server + /// @param sender_ip NCR sender's IP address /// @param sender_port NCR sender port + /// @param max_queue_size maximum number of NCRs allowed in sender's queue void configureD2(bool enable_updates, bool exp_result = SHOULD_PASS, - const std::string& ip_address = "127.0.0.1", - const uint32_t port = 53001, - const uint32_t sender_port = 0); + const std::string& server_ip = "::1", + const size_t port = 53001, + const std::string& sender_ip = "::", + const size_t sender_port = 0, + const size_t max_queue_size = 1024); /// @brief Configures the server with the given configuration /// diff --git a/src/lib/dhcpsrv/d2_client_cfg.cc b/src/lib/dhcpsrv/d2_client_cfg.cc index 5e1346efb7..473453f7fa 100644 --- a/src/lib/dhcpsrv/d2_client_cfg.cc +++ b/src/lib/dhcpsrv/d2_client_cfg.cc @@ -55,19 +55,19 @@ D2ClientConfig::D2ClientConfig(const bool enable_updates, const std::string& generated_prefix, const std::string& qualifying_suffix) : enable_updates_(enable_updates), - server_ip_(server_ip), - server_port_(server_port), - sender_ip_(sender_ip), - sender_port_(sender_port), - max_queue_size_(max_queue_size), - ncr_protocol_(ncr_protocol), - ncr_format_(ncr_format), - always_include_fqdn_(always_include_fqdn), - override_no_update_(override_no_update), - override_client_update_(override_client_update), - replace_client_name_(replace_client_name), - generated_prefix_(generated_prefix), - qualifying_suffix_(qualifying_suffix) { + server_ip_(server_ip), + server_port_(server_port), + sender_ip_(sender_ip), + sender_port_(sender_port), + max_queue_size_(max_queue_size), + ncr_protocol_(ncr_protocol), + ncr_format_(ncr_format), + always_include_fqdn_(always_include_fqdn), + override_no_update_(override_no_update), + override_client_update_(override_client_update), + replace_client_name_(replace_client_name), + generated_prefix_(generated_prefix), + qualifying_suffix_(qualifying_suffix) { validateContents(); } @@ -75,17 +75,17 @@ D2ClientConfig::D2ClientConfig() : enable_updates_(false), server_ip_(isc::asiolink::IOAddress(DFT_SERVER_IP)), server_port_(DFT_SERVER_PORT), - sender_ip_(isc::asiolink::IOAddress("0.0.0.0")), - sender_port_(0), - max_queue_size_(0), - ncr_protocol_(dhcp_ddns::NCR_UDP), - ncr_format_(dhcp_ddns::FMT_JSON), - always_include_fqdn_(false), - override_no_update_(false), - override_client_update_(false), - replace_client_name_(false), - generated_prefix_("myhost"), - qualifying_suffix_("example.com") { + sender_ip_(isc::asiolink::IOAddress(DFT_V4_SENDER_IP)), + sender_port_(DFT_SENDER_PORT), + max_queue_size_(DFT_MAX_QUEUE_SIZE), + ncr_protocol_(dhcp_ddns::stringToNcrProtocol(DFT_NCR_PROTOCOL)), + ncr_format_(dhcp_ddns::stringToNcrFormat(DFT_NCR_FORMAT)), + always_include_fqdn_(DFT_ALWAYS_INCLUDE_FQDN), + override_no_update_(DFT_OVERRIDE_NO_UPDATE), + override_client_update_(DFT_OVERRIDE_CLIENT_UPDATE), + replace_client_name_(DFT_REPLACE_CLIENT_NAME), + generated_prefix_(DFT_GENERATED_PREFIX), + qualifying_suffix_(DFT_QUALIFYING_SUFFIX) { validateContents(); }