]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add dns_zone_logv()
authorMichał Kępień <michal@isc.org>
Mon, 11 Jun 2018 10:49:06 +0000 (12:49 +0200)
committerMichał Kępień <michal@isc.org>
Mon, 11 Jun 2018 10:49:06 +0000 (12:49 +0200)
Add a new libdns function, dns_zone_logv(), which takes a single va_list
argument rather than a variable number of arguments and can be used as a
base for implementing more specific zone logging functions.

lib/dns/include/dns/zone.h
lib/dns/win32/libdns.def.in
lib/dns/zone.c

index 22fc47df9c3ec1c52d34093ff5303534a6447e05..4a7a9f9430b224a006f7ae6dc343f949d16fe9ad 100644 (file)
@@ -1968,6 +1968,15 @@ dns_zone_setdialup(dns_zone_t *zone, dns_dialuptype_t dialup);
  *\li  'dialup' to be a valid dialup type.
  */
 
+void
+dns_zone_logv(dns_zone_t *zone, isc_logcategory_t *category, int level,
+             const char *prefix, const char *msg, va_list ap);
+/*%<
+ * Log the message 'msg...' at 'level' using log category 'category', including
+ * text that identifies the message as applying to 'zone'.  If the (optional)
+ * 'prefix' is not NULL, it will be placed at the start of the entire log line.
+ */
+
 void
 dns_zone_log(dns_zone_t *zone, int level, const char *msg, ...)
        ISC_FORMAT_PRINTF(3, 4);
index 3f9e1f26f88b3ce783ca3f48a02ee716e610c63d..ce44becd63cf06d675d1d17222522a21e39056df 100644 (file)
@@ -1209,6 +1209,7 @@ dns_zone_loadandthaw
 dns_zone_loadnew
 dns_zone_log
 dns_zone_logc
+dns_zone_logv
 dns_zone_maintenance
 dns_zone_markdirty
 dns_zone_name
index 19a573241fb51a4d231ea9cb8d3440301a08390d..cbd286512acfe8e65b13bab5ea5cdcada7424b2e 100644 (file)
@@ -13763,6 +13763,37 @@ dns_zone_nameonly(dns_zone_t *zone, char *buf, size_t length) {
        zone_name_tostr(zone, buf, length);
 }
 
+void
+dns_zone_logv(dns_zone_t *zone, isc_logcategory_t *category, int level,
+             const char *prefix, const char *fmt, va_list ap)
+{
+       char message[4096];
+       const char *zstr;
+
+       if (!isc_log_wouldlog(dns_lctx, level)) {
+               return;
+       }
+
+       vsnprintf(message, sizeof(message), fmt, ap);
+
+       switch (zone->type) {
+       case dns_zone_key:
+               zstr = "managed-keys-zone";
+               break;
+       case dns_zone_redirect:
+               zstr = "redirect-zone";
+               break;
+       default:
+               zstr = "zone ";
+       }
+
+       isc_log_write(dns_lctx, category, DNS_LOGMODULE_ZONE, level,
+                     "%s%s%s%s: %s",
+                     (prefix != NULL ? prefix : ""),
+                     (prefix != NULL ? ": " : ""),
+                     zstr, zone->strnamerd, message);
+}
+
 static void
 notify_log(dns_zone_t *zone, int level, const char *fmt, ...) {
        va_list ap;