Browse Source

[3269] Include client id in the server's response to Confirm.

Marcin Siodelski 10 years ago
parent
commit
434cc52454
2 changed files with 10 additions and 6 deletions
  1. 2 1
      src/bin/dhcp6/dhcp6_srv.cc
  2. 8 5
      src/bin/dhcp6/tests/confirm_unittest.cc

+ 2 - 1
src/bin/dhcp6/dhcp6_srv.cc

@@ -2323,7 +2323,8 @@ Dhcpv6Srv::processConfirm(const Pkt6Ptr& confirm) {
 
     // The server sends Reply message in response to Confirm.
     Pkt6Ptr reply(new Pkt6(DHCPV6_REPLY, confirm->getTransid()));
-    // Append necessary options. e.g. server id.
+    // Make sure that the necessary options are included.
+    copyDefaultOptions(confirm, reply);
     appendDefaultOptions(confirm, reply);
     // Number of addresses verified. If at the end it occurs that no addresses
     // were verified we will need to dicard the message.

+ 8 - 5
src/bin/dhcp6/tests/confirm_unittest.cc

@@ -164,9 +164,9 @@ TEST_F(ConfirmTest, directClientDifferentIAID) {
     // indicate the success.
     ASSERT_TRUE(client.receivedStatusCode());
     ASSERT_EQ(STATUS_Success, client.getStatusCode());
-    // Make sure that the server id has been included.
+    // Make sure that the server id and client id have been included.
     EXPECT_TRUE(client.getContext().response_->getOption(D6O_SERVERID));
-
+    EXPECT_TRUE(client.getContext().response_->getOption(D6O_CLIENTID));
 
     ASSERT_EQ(2, client.getLeaseNum());
     lease_client2 = client.getLease(1);
@@ -178,8 +178,9 @@ TEST_F(ConfirmTest, directClientDifferentIAID) {
     ASSERT_NO_THROW(client.doConfirm());
     ASSERT_TRUE(client.receivedStatusCode());
     ASSERT_EQ(STATUS_NotOnLink, client.getStatusCode());
-    // Make sure that the server id has been included.
+    // Make sure that the server id have been included.
     EXPECT_TRUE(client.getContext().response_->getOption(D6O_SERVERID));
+    EXPECT_TRUE(client.getContext().response_->getOption(D6O_CLIENTID));
 }
 
 
@@ -220,8 +221,9 @@ TEST_F(ConfirmTest, relayedClient) {
     ASSERT_NO_THROW(client.doConfirm());
     ASSERT_TRUE(client.receivedStatusCode());
     ASSERT_EQ(STATUS_NotOnLink, client.getStatusCode());
-    // Make sure that the server id has been included.
+    // Make sure that the server id and client id have been included.
     EXPECT_TRUE(client.getContext().response_->getOption(D6O_SERVERID));
+    EXPECT_TRUE(client.getContext().response_->getOption(D6O_CLIENTID));
 }
 
 // Test that the Confirm message without any addresses is discarded.
@@ -261,8 +263,9 @@ TEST_F(ConfirmTest, relayedUnicast) {
     // indicate the success.
     ASSERT_TRUE(client.receivedStatusCode());
     ASSERT_EQ(STATUS_Success, client.getStatusCode());
-    // Make sure that the server id has been included.
+    // Make sure that the server id and client id have been included.
     EXPECT_TRUE(client.getContext().response_->getOption(D6O_SERVERID));
+    EXPECT_TRUE(client.getContext().response_->getOption(D6O_CLIENTID));
 }
 
 // This test checks that the Confirm message is discarded by the server if it