isc_result_t
named_server_status(named_server_t *server, isc_buffer_t **text) {
isc_result_t result;
- unsigned int zonecount, xferrunning, xferdeferred, soaqueries;
- unsigned int automatic;
+ unsigned int zonecount, xferrunning, xferdeferred, xferfirstrefresh;
+ unsigned int soaqueries, automatic;
const char *ob = "", *cb = "", *alt = "";
char boottime[ISC_FORMATHTTPTIMESTAMP_SIZE];
char configtime[ISC_FORMATHTTPTIMESTAMP_SIZE];
DNS_ZONESTATE_XFERRUNNING);
xferdeferred = dns_zonemgr_getcount(server->zonemgr,
DNS_ZONESTATE_XFERDEFERRED);
+ xferfirstrefresh = dns_zonemgr_getcount(server->zonemgr,
+ DNS_ZONESTATE_XFERFIRSTREFRESH);
soaqueries = dns_zonemgr_getcount(server->zonemgr,
DNS_ZONESTATE_SOAQUERY);
automatic = dns_zonemgr_getcount(server->zonemgr,
snprintf(line, sizeof(line), "xfers deferred: %u\n", xferdeferred);
CHECK(putstr(text, line));
+ snprintf(line, sizeof(line), "xfers first refresh: %u\n",
+ xferfirstrefresh);
+ CHECK(putstr(text, line));
+
snprintf(line, sizeof(line), "soa queries in progress: %u\n",
soaqueries);
CHECK(putstr(text, line));
DNS_ZONEKEY___MAX = UINT64_MAX, /* trick to make the ENUM 64-bit wide */
} dns_zonekey_t;
+/*
+ * Zone states
+ */
+typedef enum {
+ DNS_ZONESTATE_XFERRUNNING = 1,
+ DNS_ZONESTATE_XFERDEFERRED,
+ DNS_ZONESTATE_XFERFIRSTREFRESH,
+ DNS_ZONESTATE_SOAQUERY,
+ DNS_ZONESTATE_ANY,
+ DNS_ZONESTATE_AUTOMATIC,
+} dns_zonestate_t;
+
#ifndef DNS_ZONE_MINREFRESH
#define DNS_ZONE_MINREFRESH 300 /*%< 5 minutes */
#endif /* ifndef DNS_ZONE_MINREFRESH */
* exponential backoff */
#endif /* ifndef DNS_ZONE_DEFAULTRETRY */
-#define DNS_ZONESTATE_XFERRUNNING 1
-#define DNS_ZONESTATE_XFERDEFERRED 2
-#define DNS_ZONESTATE_SOAQUERY 3
-#define DNS_ZONESTATE_ANY 4
-#define DNS_ZONESTATE_AUTOMATIC 5
-
ISC_LANG_BEGINDECLS
/***
*/
unsigned int
-dns_zonemgr_getcount(dns_zonemgr_t *zmgr, int state);
+dns_zonemgr_getcount(dns_zonemgr_t *zmgr, dns_zonestate_t state);
/*%<
* Returns the number of zones in the specified state.
*
* Requires:
*\li 'zmgr' to be a valid zone manager.
- *\li 'state' to be a valid DNS_ZONESTATE_ constant.
+ *\li 'state' to be a valid DNS_ZONESTATE_ enum.
*/
isc_result_t
}
unsigned int
-dns_zonemgr_getcount(dns_zonemgr_t *zmgr, int state) {
+dns_zonemgr_getcount(dns_zonemgr_t *zmgr, dns_zonestate_t state) {
dns_zone_t *zone;
unsigned int count = 0;
count++;
}
break;
+ case DNS_ZONESTATE_XFERFIRSTREFRESH:
+ for (zone = ISC_LIST_HEAD(zmgr->zones); zone != NULL;
+ zone = ISC_LIST_NEXT(zone, link))
+ {
+ if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_FIRSTREFRESH)) {
+ count++;
+ }
+ }
+ break;
case DNS_ZONESTATE_SOAQUERY:
for (zone = ISC_LIST_HEAD(zmgr->zones); zone != NULL;
zone = ISC_LIST_NEXT(zone, link))