From: Thomas Markwalder Date: Tue, 11 Mar 2014 11:23:19 +0000 (-0400) Subject: [3362] Added additional commentary regarding use of NXRRSET in NameChangeRemove X-Git-Tag: kea-eng-20140313~13^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c943bd48201e4ebb5608c986fd7543fa828f4ee4;p=thirdparty%2Fkea.git [3362] Added additional commentary regarding use of NXRRSET in NameChangeRemove --- diff --git a/src/bin/d2/nc_remove.cc b/src/bin/d2/nc_remove.cc index 3e0a17d4cf..5eb0521133 100644 --- a/src/bin/d2/nc_remove.cc +++ b/src/bin/d2/nc_remove.cc @@ -214,6 +214,8 @@ NameRemoveTransaction::removingFwdAddrsHandler() { switch (getDnsUpdateStatus()) { case DNSClient::SUCCESS: { // We successfully received a response packet from the server. + // The RCODE will be based on a value-dependent RRset search, + // see RFC 2136 section 3.2.3/3.2.4. const dns::Rcode& rcode = getDnsUpdateResponse()->getRcode(); if ((rcode == dns::Rcode::NOERROR()) || (rcode == dns::Rcode::NXRRSET())) { @@ -318,13 +320,14 @@ NameRemoveTransaction::removingFwdRRsHandler() { switch (getDnsUpdateStatus()) { case DNSClient::SUCCESS: { // We successfully received a response packet from the server. + // The RCODE will be based on a value-dependent RRset search, + // see RFC 2136 section 3.2.3/3.2.4. const dns::Rcode& rcode = getDnsUpdateResponse()->getRcode(); - // A Rcode of NXRRSET means there are no RRs for the FQDN, - // which is fine. We were asked to delete them, they are not there - // so all is well. if ((rcode == dns::Rcode::NOERROR()) || (rcode == dns::Rcode::NXRRSET())) { - // We were able to remove the forward mapping. Mark it as done. + // We were able to remove them or they were not there ( + // Rcode of NXRRSET means there are no matching RRsets). + // In either case, we consider it success and mark it as done. setForwardChangeCompleted(true); // If request calls for reverse update then do that next, @@ -470,11 +473,14 @@ NameRemoveTransaction::removingRevPtrsHandler() { switch (getDnsUpdateStatus()) { case DNSClient::SUCCESS: { // We successfully received a response packet from the server. + // The RCODE will be based on a value-dependent RRset search, + // see RFC 2136 section 3.2.3/3.2.4. const dns::Rcode& rcode = getDnsUpdateResponse()->getRcode(); if ((rcode == dns::Rcode::NOERROR()) || (rcode == dns::Rcode::NXRRSET())) { - // We were able to update the reverse mapping. Mark it as done. - // We are also treating NXRRSET as success. + // We were able to remove the reverse mapping or they were + // not there (Rcode of NXRRSET means there are no matching + // RRsets). In either case, mark it as done. setReverseChangeCompleted(true); transition(PROCESS_TRANS_OK_ST, UPDATE_OK_EVT); } else {