lock_rw_wrlock(&set->lock);
rrstr = sldns_wire2str_rr(rr, rr_len);
if(!rrstr) {
- log_err("malloc error while inserting RPZ respip trigger");
+ log_err("malloc error while inserting RPZ ipaddr based trigger");
lock_rw_unlock(&set->lock);
return 0;
}
{
struct reply_info rep;
uint16_t udpsize;
- /* make answer with time=0 for fixed TTL values */
+
memset(&rep, 0, sizeof(rep));
rep.flags = (uint16_t)((BIT_QR | BIT_AA | BIT_RA) | rcode);
rep.qdcount = 1;
else rep.ns_numrrsets = 1;
rep.rrset_count = 1;
rep.rrsets = &rrset;
+ rep.ttl = ((struct packed_rrset_data*)rrset->entry.data)->rr_ttl[0];
udpsize = edns->udp_size;
edns->edns_version = EDNS_ADVERTISED_VERSION;
verbose(VERB_ALGO, "RPZ: bug: local-data action and no local data");
goto done;
}
+
rp = respip_copy_rrset(raddr->data, temp);
if(!rp) {
verbose(VERB_ALGO, "RPZ: local-data action: out of memory");
goto done;
}
+
+ //struct packed_rrset_data* pd = raddr->data->entry.data;
+ //struct packed_rrset_data* pd2 = rp->entry.data;
+ //verbose(VERB_ALGO, "ttl=%ld ttl=%ld", pd->rr_ttl[0], pd2->rr_ttl[0]);
+
rp->rk.flags |= PACKED_RRSET_FIXEDTTL;
rp->rk.dname = qinfo->qname;
rp->rk.dname_len = qinfo->qname_len;