summaryrefslogtreecommitdiffstats
path: root/usr.sbin/nsd/rrl.c
diff options
context:
space:
mode:
authorsthen <sthen@openbsd.org>2018-03-06 21:01:56 +0000
committersthen <sthen@openbsd.org>2018-03-06 21:01:56 +0000
commitb90bb40ec7347ca2da354e4585275903879368db (patch)
tree5073bf2a9be3f17a9aacd721c909ddf791786454 /usr.sbin/nsd/rrl.c
parentFix a small mistake from r1.229 causing sysctl(8) to print "newval -> newval" (diff)
downloadwireguard-openbsd-b90bb40ec7347ca2da354e4585275903879368db.tar.xz
wireguard-openbsd-b90bb40ec7347ca2da354e4585275903879368db.zip
update to NSD 4.1.20, ok florian@
- Fix memory leak in zone file read of unknown rr formatted RRs. - Fix memory leak when rehashing nsec3 after axfr or zonefile read, in the selectively allocated precompiled nsec3 hashes.
Diffstat (limited to 'usr.sbin/nsd/rrl.c')
-rw-r--r--usr.sbin/nsd/rrl.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/usr.sbin/nsd/rrl.c b/usr.sbin/nsd/rrl.c
index c8dec3fc908..69232a95f4a 100644
--- a/usr.sbin/nsd/rrl.c
+++ b/usr.sbin/nsd/rrl.c
@@ -100,6 +100,27 @@ void rrl_mmap_init(int numch, size_t numbuck, size_t lm, size_t wlm, size_t sm,
#endif
}
+void rrl_mmap_deinit(void)
+{
+#ifdef HAVE_MMAP
+ size_t i;
+ for(i=0; i<rrl_maps_num; i++) {
+ munmap(rrl_maps[i], sizeof(struct rrl_bucket)*rrl_array_size);
+ rrl_maps[i] = NULL;
+ }
+ free(rrl_maps);
+ rrl_maps = NULL;
+#endif
+}
+
+void rrl_mmap_deinit_keep_mmap(void)
+{
+#ifdef HAVE_MMAP
+ free(rrl_maps);
+ rrl_maps = NULL;
+#endif
+}
+
void rrl_set_limit(size_t lm, size_t wlm, size_t sm)
{
rrl_ratelimit = lm*2;
@@ -117,6 +138,13 @@ void rrl_init(size_t ch)
#endif
}
+void rrl_deinit(size_t ch)
+{
+ if(!rrl_maps || ch >= rrl_maps_num)
+ free(rrl_array);
+ rrl_array = NULL;
+}
+
/** return the source netblock of the query, this is the genuine source
* for genuine queries and the target for reflected packets */
static uint64_t rrl_get_source(query_type* query, uint16_t* c2)