#include <libknot/descriptor.h>
#include <libknot/errcode.h>
#include <libknot/rrset.h>
- #include <libknot/internal/mempool.h>
+#include <libknot/rrtype/rrsig.h>
#include <libknot/rrtype/rdname.h>
+ #include <ucw/config.h>
+ #include <ucw/lib.h>
#include "lib/layer/iterate.h"
#include "lib/cache.h"
}
static int loot_rr(struct kr_cache_txn *txn, knot_pkt_t *pkt, const knot_dname_t *name,
- uint16_t rrclass, uint16_t rrtype, struct kr_query *qry)
+ uint16_t rrclass, uint16_t rrtype, struct kr_query *qry, bool fetch_rrsig)
{
/* Check if record exists in cache */
- uint32_t timestamp = qry->timestamp.tv_sec;
+ int ret = 0;
+ uint32_t drift = qry->timestamp.tv_sec;
knot_rrset_t cache_rr;
knot_rrset_init(&cache_rr, (knot_dname_t *)name, rrtype, rrclass);
- int ret = kr_cache_peek_rr(txn, &cache_rr, &drift);
+ if (fetch_rrsig) {
- ret = kr_cache_peek_rrsig(txn, &cache_rr, ×tamp);
++ ret = kr_cache_peek_rrsig(txn, &cache_rr, &drift);
+ } else {
- ret = kr_cache_peek_rr(txn, &cache_rr, ×tamp);
++ ret = kr_cache_peek_rr(txn, &cache_rr, &drift);
+ }
if (ret != 0) {
return ret;
}