mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-08 19:32:06 -04:00
Show the local and remote addresses for the "Refresh SOA" query
Currently in the statsistics channel's incoming zone transfers list the local and remote addresses are shown only when the zone transfer is already running. Since we have now introduced the "Refresh SOA" state, which shows the state of the SOA query before the zone transfer is started, this commit implements a feature to show the local and remote addresses for the SOA query, when the state is "Refresh SOA".
This commit is contained in:
parent
979b86ecb9
commit
dee829d9dc
3 changed files with 69 additions and 0 deletions
|
|
@ -1459,6 +1459,7 @@ xfrin_xmlrender(dns_zone_t *zone, void *arg) {
|
|||
dns_rdataclass_t rdclass;
|
||||
const char *ztype;
|
||||
uint32_t serial;
|
||||
isc_sockaddr_t addr;
|
||||
const isc_sockaddr_t *addrp = NULL;
|
||||
char addr_buf[ISC_SOCKADDR_FORMATSIZE];
|
||||
dns_transport_type_t transport_type;
|
||||
|
|
@ -1571,6 +1572,10 @@ xfrin_xmlrender(dns_zone_t *zone, void *arg) {
|
|||
addrp = dns_xfrin_getsourceaddr(xfr);
|
||||
isc_sockaddr_format(addrp, addr_buf, sizeof(addr_buf));
|
||||
TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR addr_buf));
|
||||
} else if (is_presoa) {
|
||||
addr = dns_zone_getsourceaddr(zone);
|
||||
isc_sockaddr_format(&addr, addr_buf, sizeof(addr_buf));
|
||||
TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR addr_buf));
|
||||
} else {
|
||||
TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR "-"));
|
||||
}
|
||||
|
|
@ -1581,6 +1586,10 @@ xfrin_xmlrender(dns_zone_t *zone, void *arg) {
|
|||
addrp = dns_xfrin_getprimaryaddr(xfr);
|
||||
isc_sockaddr_format(addrp, addr_buf, sizeof(addr_buf));
|
||||
TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR addr_buf));
|
||||
} else if (is_presoa) {
|
||||
addr = dns_zone_getprimaryaddr(zone);
|
||||
isc_sockaddr_format(&addr, addr_buf, sizeof(addr_buf));
|
||||
TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR addr_buf));
|
||||
} else {
|
||||
TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR "-"));
|
||||
}
|
||||
|
|
@ -2506,6 +2515,7 @@ xfrin_jsonrender(dns_zone_t *zone, void *arg) {
|
|||
uint32_t serial;
|
||||
json_object *xfrinarray = (json_object *)arg;
|
||||
json_object *xfrinobj = NULL;
|
||||
isc_sockaddr_t addr;
|
||||
const isc_sockaddr_t *addrp = NULL;
|
||||
char addr_buf[ISC_SOCKADDR_FORMATSIZE];
|
||||
dns_transport_type_t transport_type;
|
||||
|
|
@ -2602,6 +2612,11 @@ xfrin_jsonrender(dns_zone_t *zone, void *arg) {
|
|||
isc_sockaddr_format(addrp, addr_buf, sizeof(addr_buf));
|
||||
json_object_object_add(xfrinobj, "localaddr",
|
||||
json_object_new_string(addr_buf));
|
||||
} else if (is_presoa) {
|
||||
addr = dns_zone_getsourceaddr(zone);
|
||||
isc_sockaddr_format(&addr, addr_buf, sizeof(addr_buf));
|
||||
json_object_object_add(xfrinobj, "localaddr",
|
||||
json_object_new_string(addr_buf));
|
||||
} else {
|
||||
json_object_object_add(xfrinobj, "localaddr",
|
||||
json_object_new_string("-"));
|
||||
|
|
@ -2612,6 +2627,11 @@ xfrin_jsonrender(dns_zone_t *zone, void *arg) {
|
|||
isc_sockaddr_format(addrp, addr_buf, sizeof(addr_buf));
|
||||
json_object_object_add(xfrinobj, "remoteaddr",
|
||||
json_object_new_string(addr_buf));
|
||||
} else if (is_presoa) {
|
||||
addr = dns_zone_getprimaryaddr(zone);
|
||||
isc_sockaddr_format(&addr, addr_buf, sizeof(addr_buf));
|
||||
json_object_object_add(xfrinobj, "remoteaddr",
|
||||
json_object_new_string(addr_buf));
|
||||
} else {
|
||||
json_object_object_add(xfrinobj, "remoteaddr",
|
||||
json_object_new_string("-"));
|
||||
|
|
|
|||
|
|
@ -1479,6 +1479,27 @@ dns_zone_getsigresigninginterval(dns_zone_t *zone);
|
|||
* \li 'zone' to be a valid zone.
|
||||
*/
|
||||
|
||||
isc_sockaddr_t
|
||||
dns_zone_getsourceaddr(dns_zone_t *zone);
|
||||
/*%<
|
||||
* Get the zone's source address from which it has last contacted the current
|
||||
* primary server.
|
||||
*
|
||||
* Requires:
|
||||
* \li 'zone' to be a valid zone.
|
||||
* \li 'zone' has a non-empty primaries list.
|
||||
*/
|
||||
|
||||
isc_sockaddr_t
|
||||
dns_zone_getprimaryaddr(dns_zone_t *zone);
|
||||
/*%<
|
||||
* Get the zone's current primary server.
|
||||
*
|
||||
* Requires:
|
||||
* \li 'zone' to be a valid zone.
|
||||
* \li 'zone' has a non-empty primaries list.
|
||||
*/
|
||||
|
||||
isc_time_t
|
||||
dns_zone_getxfrintime(const dns_zone_t *zone);
|
||||
/*%<
|
||||
|
|
|
|||
|
|
@ -17588,6 +17588,34 @@ dns_zone_getsigresigninginterval(dns_zone_t *zone) {
|
|||
return (zone->sigresigninginterval);
|
||||
}
|
||||
|
||||
isc_sockaddr_t
|
||||
dns_zone_getsourceaddr(dns_zone_t *zone) {
|
||||
isc_sockaddr_t sourceaddr;
|
||||
|
||||
REQUIRE(DNS_ZONE_VALID(zone));
|
||||
|
||||
LOCK_ZONE(zone);
|
||||
INSIST(dns_remote_count(&zone->primaries) > 0);
|
||||
sourceaddr = zone->sourceaddr;
|
||||
UNLOCK_ZONE(zone);
|
||||
|
||||
return (sourceaddr);
|
||||
}
|
||||
|
||||
isc_sockaddr_t
|
||||
dns_zone_getprimaryaddr(dns_zone_t *zone) {
|
||||
isc_sockaddr_t curraddr;
|
||||
|
||||
REQUIRE(DNS_ZONE_VALID(zone));
|
||||
|
||||
LOCK_ZONE(zone);
|
||||
INSIST(dns_remote_count(&zone->primaries) > 0);
|
||||
curraddr = dns_remote_curraddr(&zone->primaries);
|
||||
UNLOCK_ZONE(zone);
|
||||
|
||||
return (curraddr);
|
||||
}
|
||||
|
||||
isc_time_t
|
||||
dns_zone_getxfrintime(const dns_zone_t *zone) {
|
||||
REQUIRE(DNS_ZONE_VALID(zone));
|
||||
|
|
|
|||
Loading…
Reference in a new issue