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;
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 "-"));
}
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 "-"));
}
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;
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("-"));
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("-"));
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));