summaryrefslogtreecommitdiffstats
path: root/usr.sbin/nsd/udbzone.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/nsd/udbzone.c')
-rw-r--r--usr.sbin/nsd/udbzone.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/usr.sbin/nsd/udbzone.c b/usr.sbin/nsd/udbzone.c
index 67de2db94d1..30f1c4beb61 100644
--- a/usr.sbin/nsd/udbzone.c
+++ b/usr.sbin/nsd/udbzone.c
@@ -95,6 +95,7 @@ udb_zone_create(udb_base* udb, udb_ptr* result, const uint8_t* dname,
ZONE(&z)->rr_count = 0;
ZONE(&z)->expired = 0;
ZONE(&z)->mtime = 0;
+ ZONE(&z)->mtime_nsec = 0;
ZONE(&z)->namelen = dlen;
memmove(ZONE(&z)->name, dname, dlen);
if(!udb_radix_tree_create(udb, &dtree)) {
@@ -222,6 +223,7 @@ udb_zone_clear(udb_base* udb, udb_ptr* zone)
ZONE(zone)->rr_count = 0;
ZONE(zone)->expired = 0;
ZONE(zone)->mtime = 0;
+ ZONE(zone)->mtime_nsec = 0;
udb_ptr_unlink(&dtree, udb);
}
@@ -255,15 +257,18 @@ udb_zone_search(udb_base* udb, udb_ptr* result, const uint8_t* dname,
return 0;
}
-uint64_t udb_zone_get_mtime(udb_base* udb, const uint8_t* dname, size_t dlen)
+void udb_zone_get_mtime(udb_base* udb, const uint8_t* dname, size_t dlen,
+ struct timespec* mtime)
{
udb_ptr z;
if(udb_zone_search(udb, &z, dname, dlen)) {
- uint64_t t = ZONE(&z)->mtime;
+ mtime->tv_sec = ZONE(&z)->mtime;
+ mtime->tv_nsec = ZONE(&z)->mtime_nsec;
udb_ptr_unlink(&z, udb);
- return t;
+ return;
}
- return 0;
+ mtime->tv_sec = 0;
+ mtime->tv_nsec = 0;
}
void udb_zone_set_log_str(udb_base* udb, udb_ptr* zone, const char* str)