From: Peter van Dijk Date: Fri, 20 Jun 2025 09:48:52 +0000 (+0200) Subject: predictable IDs for other objects X-Git-Tag: dnsdist-2.1.0-alpha0~6^2~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b3024eec38cd3e6c5615d77e6d35f8e390182b4e;p=thirdparty%2Fpdns.git predictable IDs for other objects --- diff --git a/modules/lmdbbackend/lmdbbackend.cc b/modules/lmdbbackend/lmdbbackend.cc index 55f698b3b4..05edccccf0 100644 --- a/modules/lmdbbackend/lmdbbackend.cc +++ b/modules/lmdbbackend/lmdbbackend.cc @@ -2199,7 +2199,7 @@ bool LMDBBackend::setDomainMetadata(const ZoneName& name, const std::string& kin for (const auto& m : meta) { DomainMeta dm{name, kind, m}; - txn.put(dm, 0, d_random_ids); + txn.put(dm, 0, d_random_ids, burtleCI(kind, name.hash())); } txn.commit(); return true; @@ -2242,7 +2242,15 @@ bool LMDBBackend::addDomainKey(const ZoneName& name, const KeyData& key, int64_t { auto txn = d_tkdb->getRWTransaction(); KeyDataDB kdb{name, key.content, key.flags, key.active, key.published}; - keyId = txn.put(kdb, 0, d_random_ids); + + // all this just to get the tag - while most of our callers (except b2b-migrate) already have a dpk + DNSKEYRecordContent dkrc; + auto keyEngine = shared_ptr(DNSCryptoKeyEngine::makeFromISCString(dkrc, key.content)); + DNSSECPrivateKey dpk; + dpk.setKey(keyEngine, key.flags); + auto tag=dpk.getDNSKEY().getTag(); + + keyId = txn.put(kdb, 0, d_random_ids, name.hash(tag)); txn.commit(); return true; @@ -2866,7 +2874,7 @@ bool LMDBBackend::setTSIGKey(const DNSName& name, const DNSName& algorithm, cons tk.algorithm = algorithm; tk.key = content; - txn.put(tk, 0, d_random_ids); + txn.put(tk, 0, d_random_ids, name.hash()); txn.commit(); return true;