Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ISC Open Source Projects
BIND
Commits
34f3693b
Commit
34f3693b
authored
May 03, 2013
by
Evan Hunt
Browse files
[master] log forwarded updates
3566. [func] Log when forwarding updates to master. [RT #33240]
parent
1a076410
Changes
4
Hide whitespace changes
Inline
Side-by-side
CHANGES
View file @
34f3693b
3566. [func] Log when forwarding updates to master. [RT #33240]
3564. [bug] Improved handling of corrupted map files. [RT #33380]
3563. [contrib] zone2sqlite failed with some table names. [RT #33375]
...
...
bin/named/update.c
View file @
34f3693b
...
...
@@ -3359,6 +3359,8 @@ forward_action(isc_task_t *task, isc_event_t *event) {
static
isc_result_t
send_forward_event
(
ns_client_t
*
client
,
dns_zone_t
*
zone
)
{
char
namebuf
[
DNS_NAME_FORMATSIZE
];
char
classbuf
[
DNS_RDATACLASS_FORMATSIZE
];
isc_result_t
result
=
ISC_R_SUCCESS
;
update_event_t
*
event
=
NULL
;
isc_task_t
*
zonetask
=
NULL
;
...
...
@@ -3384,6 +3386,15 @@ send_forward_event(ns_client_t *client, dns_zone_t *zone) {
client
->
nupdates
++
;
event
->
ev_arg
=
evclient
;
dns_name_format
(
dns_zone_getorigin
(
zone
),
namebuf
,
sizeof
(
namebuf
));
dns_rdataclass_format
(
dns_zone_getclass
(
zone
),
classbuf
,
sizeof
(
classbuf
));
ns_client_log
(
client
,
NS_LOGCATEGORY_UPDATE
,
NS_LOGMODULE_UPDATE
,
LOGLEVEL_PROTOCOL
,
"forwarding update for zone '%s/%s'"
,
namebuf
,
classbuf
);
dns_zone_gettask
(
zone
,
&
zonetask
);
isc_task_send
(
zonetask
,
ISC_EVENT_PTR
(
&
event
));
...
...
bin/tests/system/upforwd/tests.sh
View file @
34f3693b
...
...
@@ -40,78 +40,112 @@ do
test
$ret
=
0
&&
break
sleep
1
done
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:fetching master copy of zone before update"
ret
=
0
$DIG
+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.
\
@10.53.0.1 axfr
-p
5300
>
dig.out.ns1
||
status
=
1
@10.53.0.1 axfr
-p
5300
>
dig.out.ns1
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:fetching slave 1 copy of zone before update"
$DIG
+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.
\
@10.53.0.2 axfr
-p
5300
>
dig.out.ns2
||
status
=
1
@10.53.0.2 axfr
-p
5300
>
dig.out.ns2
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:fetching slave 2 copy of zone before update"
ret
=
0
$DIG
+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.
\
@10.53.0.3 axfr
-p
5300
>
dig.out.ns3
||
status
=
1
@10.53.0.3 axfr
-p
5300
>
dig.out.ns3
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:comparing pre-update copies to known good data"
$PERL
../digcomp.pl knowngood.before dig.out.ns1
||
status
=
1
$PERL
../digcomp.pl knowngood.before dig.out.ns2
||
status
=
1
$PERL
../digcomp.pl knowngood.before dig.out.ns3
||
status
=
1
ret
=
0
$PERL
../digcomp.pl knowngood.before dig.out.ns1
||
ret
=
1
$PERL
../digcomp.pl knowngood.before dig.out.ns2
||
ret
=
1
$PERL
../digcomp.pl knowngood.before dig.out.ns3
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:updating zone (signed)"
$NSUPDATE
-y
update.example:c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K
--
-
<<
EOF
|| status=1
ret
=
0
$NSUPDATE
-y
update.example:c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K
--
-
<<
EOF
|| ret=1
server 10.53.0.3 5300
update add updated.example. 600 A 10.10.10.1
update add updated.example. 600 TXT Foo
send
EOF
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:sleeping 15 seconds for server to incorporate changes"
sleep
15
echo
"I:fetching master copy of zone after update"
ret
=
0
$DIG
+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.
\
@10.53.0.1 axfr
-p
5300
>
dig.out.ns1
||
status
=
1
@10.53.0.1 axfr
-p
5300
>
dig.out.ns1
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:fetching slave 1 copy of zone after update"
ret
=
0
$DIG
+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.
\
@10.53.0.2 axfr
-p
5300
>
dig.out.ns2
||
status
=
1
@10.53.0.2 axfr
-p
5300
>
dig.out.ns2
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:fetching slave 2 copy of zone after update"
ret
=
0
$DIG
+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.
\
@10.53.0.3 axfr
-p
5300
>
dig.out.ns3
||
status
=
1
@10.53.0.3 axfr
-p
5300
>
dig.out.ns3
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:comparing post-update copies to known good data"
$PERL
../digcomp.pl knowngood.after1 dig.out.ns1
||
status
=
1
$PERL
../digcomp.pl knowngood.after1 dig.out.ns2
||
status
=
1
$PERL
../digcomp.pl knowngood.after1 dig.out.ns3
||
status
=
1
ret
=
0
$PERL
../digcomp.pl knowngood.after1 dig.out.ns1
||
ret
=
1
$PERL
../digcomp.pl knowngood.after1 dig.out.ns2
||
ret
=
1
$PERL
../digcomp.pl knowngood.after1 dig.out.ns3
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:checking 'forwarding update for zone' is logged"
ret
=
0
grep
"forwarding update for zone 'example/IN'"
ns3/named.run
>
/dev/null
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:updating zone (unsigned)"
$NSUPDATE
--
-
<<
EOF
|| status=1
ret
=
0
$NSUPDATE
--
-
<<
EOF
|| ret=1
server 10.53.0.3 5300
update add unsigned.example. 600 A 10.10.10.1
update add unsigned.example. 600 TXT Foo
send
EOF
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:sleeping 15 seconds for server to incorporate changes"
sleep
15
echo
"I:fetching master copy of zone after update"
ret
=
0
$DIG
+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.
\
@10.53.0.1 axfr
-p
5300
>
dig.out.ns1
||
status
=
1
@10.53.0.1 axfr
-p
5300
>
dig.out.ns1
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:fetching slave 1 copy of zone after update"
ret
=
0
$DIG
+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.
\
@10.53.0.2 axfr
-p
5300
>
dig.out.ns2
||
status
=
1
@10.53.0.2 axfr
-p
5300
>
dig.out.ns2
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:fetching slave 2 copy of zone after update"
ret
=
0
$DIG
+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd example.
\
@10.53.0.3 axfr
-p
5300
>
dig.out.ns3
||
status
=
1
@10.53.0.3 axfr
-p
5300
>
dig.out.ns3
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:comparing post-update copies to known good data"
$PERL
../digcomp.pl knowngood.after2 dig.out.ns1
||
status
=
1
$PERL
../digcomp.pl knowngood.after2 dig.out.ns2
||
status
=
1
$PERL
../digcomp.pl knowngood.after2 dig.out.ns3
||
status
=
1
ret
=
0
$PERL
../digcomp.pl knowngood.after2 dig.out.ns1
||
ret
=
1
$PERL
../digcomp.pl knowngood.after2 dig.out.ns2
||
ret
=
1
$PERL
../digcomp.pl knowngood.after2 dig.out.ns3
||
ret
=
1
if
[
$ret
!=
0
]
;
then
echo
"I:failed"
;
status
=
`
expr
$status
+
$ret
`
;
fi
echo
"I:checking update forwarding to dead master"
count
=
0
...
...
lib/dns/zone.c
View file @
34f3693b
...
...
@@ -14230,8 +14230,18 @@ forward_callback(isc_task_t *task, isc_event_t *event) {
case
dns_rcode_yxrrset
:
case
dns_rcode_nxrrset
:
case
dns_rcode_refused
:
case
dns_rcode_nxdomain
:
case
dns_rcode_nxdomain
:
{
char
rcode
[
128
];
isc_buffer_t
rb
;
isc_buffer_init
(
&
rb
,
rcode
,
sizeof
(
rcode
));
(
void
)
dns_rcode_totext
(
msg
->
rcode
,
&
rb
);
dns_zone_log
(
zone
,
ISC_LOG_INFO
,
"forwarded dynamic update: "
"master %s returned: %.*s"
,
master
,
(
int
)
rb
.
used
,
rcode
);
break
;
}
/* These should not occur if the masters/zone are valid. */
case
dns_rcode_notzone
:
...
...
Write
Preview
Supports
Markdown
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