Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Adam Osuchowski
Kea
Commits
d3c971ea
Commit
d3c971ea
authored
Mar 11, 2014
by
Thomas Markwalder
Browse files
[master Merge branch 'trac3362'
b10-dhcp-ddns now checks for NXRRSET on DNS removal, rather than NXDOMAIN
parents
5a65fffe
c943bd48
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/bin/d2/nc_remove.cc
View file @
d3c971ea
...
...
@@ -214,9 +214,11 @@ 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
::
NX
DOMAIN
()))
{
(
rcode
==
dns
::
Rcode
::
NX
RRSET
()))
{
// We were able to remove it or it wasn't there, now we
// need to remove any other RRs for this FQDN.
transition
(
REMOVING_FWD_RRS_ST
,
UPDATE_OK_EVT
);
...
...
@@ -318,14 +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
();
// @todo Not sure if NXDOMAIN is ok here, but I think so.
// A Rcode of NXDOMAIN would mean 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
::
NXDOMAIN
()))
{
// We were able to remove the forward mapping. Mark it as done.
(
rcode
==
dns
::
Rcode
::
NXRRSET
()))
{
// 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,
...
...
@@ -471,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
::
NXDOMAIN
()))
{
// We were able to update the reverse mapping. Mark it as done.
// @todo For now we are also treating NXDOMAIN as success.
(
rcode
==
dns
::
Rcode
::
NXRRSET
()))
{
// 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
{
...
...
src/bin/d2/tests/nc_remove_unittests.cc
View file @
d3c971ea
...
...
@@ -603,8 +603,8 @@ TEST_F(NameRemoveTransactionTest, removingFwdAddrsHandler_FqdnNotInUse) {
// Run removingFwdAddrsHandler to construct and send the request.
EXPECT_NO_THROW
(
name_remove
->
removingFwdAddrsHandler
());
// Simulate receiving a
FQDN not in use response
.
name_remove
->
fakeResponse
(
DNSClient
::
SUCCESS
,
dns
::
Rcode
::
NX
DOMAIN
());
// Simulate receiving a
RRSET does not exist
.
name_remove
->
fakeResponse
(
DNSClient
::
SUCCESS
,
dns
::
Rcode
::
NX
RRSET
());
// Run removingFwdAddrsHandler again to process the response.
EXPECT_NO_THROW
(
name_remove
->
removingFwdAddrsHandler
());
...
...
@@ -963,8 +963,8 @@ TEST_F(NameRemoveTransactionTest, removingFwdRRsHandler_FqdnNotInUse) {
// Run removingFwdRRsHandler to construct and send the request.
EXPECT_NO_THROW
(
name_remove
->
removingFwdRRsHandler
());
// Simulate receiving a
FQDN not in use
response.
name_remove
->
fakeResponse
(
DNSClient
::
SUCCESS
,
dns
::
Rcode
::
NX
DOMAIN
());
// Simulate receiving a
RRSET does not exist
response.
name_remove
->
fakeResponse
(
DNSClient
::
SUCCESS
,
dns
::
Rcode
::
NX
RRSET
());
// Run removingFwdRRsHandler again to process the response.
EXPECT_NO_THROW
(
name_remove
->
removingFwdRRsHandler
());
...
...
@@ -1340,8 +1340,8 @@ TEST_F(NameRemoveTransactionTest, removingRevPtrsHandler_FqdnNotInUse) {
EXPECT_EQ
(
StateModel
::
NOP_EVT
,
name_remove
->
getNextEvent
());
// Simulate receiving a
FQDN not in use response
.
name_remove
->
fakeResponse
(
DNSClient
::
SUCCESS
,
dns
::
Rcode
::
NX
DOMAIN
());
// Simulate receiving a
RRSET does not exist
.
name_remove
->
fakeResponse
(
DNSClient
::
SUCCESS
,
dns
::
Rcode
::
NX
RRSET
());
// Run removingRevPtrsHandler again to process the response.
EXPECT_NO_THROW
(
name_remove
->
removingRevPtrsHandler
());
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment