mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 14:35:26 +00:00
[master] log forwarded updates
3566. [func] Log when forwarding updates to master. [RT #33240]
This commit is contained in:
2
CHANGES
2
CHANGES
@@ -1,3 +1,5 @@
|
||||
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]
|
||||
|
@@ -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));
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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:
|
||||
|
Reference in New Issue
Block a user