From 11c7a5ee42ea8931ca5427a8c60851e8b0a4641b Mon Sep 17 00:00:00 2001 From: Kees Monshouwer Date: Fri, 30 May 2014 00:27:55 +0200 Subject: [PATCH] import dnssec records in lmdb database --- pdns/zone2lmdb.cc | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/pdns/zone2lmdb.cc b/pdns/zone2lmdb.cc index b552300bc3..2741868527 100644 --- a/pdns/zone2lmdb.cc +++ b/pdns/zone2lmdb.cc @@ -99,8 +99,38 @@ void emitData(string zone, ZoneParserTNG &zpt){ sd.ttl=rr.ttl; continue; } - string keyStr=reverse(stripDot(rr.qname))+"\t"+rr.qtype.getName(); - string dataStr=itoa(g_numZones+1)+"\t"+itoa(rr.ttl)+"\t"+rr.content; + + string keyStr, dataStr; + + if (rr.qtype == QType::RRSIG) { + RRSIGRecordContent rrc(rr.content); + keyStr=stripDot(rr.qname)+"\t"+DNSRecordContent::NumberToType(rrc.d_type)+"\t"+itoa(g_numZones+1); + dataStr=itoa(rr.ttl)+"\t"+rr.content; + + key.mv_data = (char*)keyStr.c_str(); + key.mv_size = keyStr.length(); + data.mv_data = (char*)dataStr.c_str(); + data.mv_size = dataStr.length(); + + mdb_put(txn_zone, rrsig_db, &key, &data, 0); + continue; + } + + if (rr.qtype == QType::NSEC || rr.qtype == QType::NSEC3) { + keyStr=stripDot(rr.qname)+"\t"+itoa(g_numZones+1); + dataStr=itoa(rr.ttl)+"\t"+rr.content; + + key.mv_data = (char*)keyStr.c_str(); + key.mv_size = keyStr.length(); + data.mv_data = (char*)dataStr.c_str(); + data.mv_size = dataStr.length(); + + mdb_put(txn_zone, nsecx_db, &key, &data, 0); + continue; + } + + keyStr=reverse(stripDot(rr.qname))+"\t"+rr.qtype.getName(); + dataStr=itoa(g_numZones+1)+"\t"+itoa(rr.ttl)+"\t"+rr.content; key.mv_data = (char*)keyStr.c_str(); key.mv_size = keyStr.length(); -- 2.47.2