]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
daemon/lua: add ability to read DO bit from packet
authorPetr Špaček <petr.spacek@nic.cz>
Fri, 21 Jun 2019 11:30:16 +0000 (13:30 +0200)
committerPetr Špaček <petr.spacek@nic.cz>
Wed, 3 Jul 2019 15:28:29 +0000 (17:28 +0200)
daemon/lua/kres-gen.lua
daemon/lua/kres-gen.sh
daemon/lua/kres.lua
lib/utils.c
lib/utils.h

index 1d867682e69b8218ca54b034212cc344dbbc5110..aecd4cff533d297eeea5095562c4acaaa7052ac2 100644 (file)
@@ -341,6 +341,7 @@ void kr_pkt_make_auth_header(knot_pkt_t *);
 int kr_pkt_put(knot_pkt_t *, const knot_dname_t *, uint32_t, uint16_t, uint16_t, const uint8_t *, uint16_t);
 int kr_pkt_recycle(knot_pkt_t *);
 int kr_pkt_clear_payload(knot_pkt_t *);
+uint16_t kr_pkt_has_dnssec(const knot_pkt_t *);
 uint16_t kr_pkt_qclass(const knot_pkt_t *);
 uint16_t kr_pkt_qtype(const knot_pkt_t *);
 char *kr_pkt_text(const knot_pkt_t *);
index 92be8d733c175b36d9661f3a14aaaab0aeda2c11..f0738e43dd1dc829b32cfa76c37b2d22a31d757a 100755 (executable)
@@ -187,6 +187,7 @@ ${CDEFS} ${LIBKRES} functions <<-EOF
        kr_pkt_put
        kr_pkt_recycle
        kr_pkt_clear_payload
+       kr_pkt_has_dnssec
        kr_pkt_qclass
        kr_pkt_qtype
        kr_pkt_text
index 22fd8fa2a9250606d652f880547864ad1e7e7c22..2fc21503fcff24fa5935cfb3ba6e898fbd434b51 100644 (file)
@@ -548,6 +548,12 @@ ffi.metatype( knot_pkt_t, {
                cd = function (pkt, val) return pkt_bit(pkt, 3, 0x10, val) end,
                ad = function (pkt, val) return pkt_bit(pkt, 3, 0x20, val) end,
                ra = function (pkt, val) return pkt_bit(pkt, 3, 0x80, val) end,
+               -- "do" is a reserved word in Lua; only getter
+               dobit = function(pkt, val)
+                       assert(val == nil, 'dobit is getter only')
+                       assert(ffi.istype(knot_pkt_t, pkt))
+                       return C.kr_pkt_has_dnssec(pkt)
+               end,
                -- Question
                qname = function(pkt)
                        assert(ffi.istype(knot_pkt_t, pkt))
index 0200b144c74b0228a029777ca52a76488df234a0..0725083ff67fc4ad516f0ff8a3d55647bc925fed 100644 (file)
@@ -1081,6 +1081,10 @@ void kr_rrset_init(knot_rrset_t *rrset, knot_dname_t *owner,
        assert(rrset);
        knot_rrset_init(rrset, owner, type, rclass, ttl);
 }
+uint16_t kr_pkt_has_dnssec(const knot_pkt_t *pkt)
+{
+       return knot_pkt_has_dnssec(pkt);
+}
 uint16_t kr_pkt_qclass(const knot_pkt_t *pkt)
 {
        return knot_pkt_qclass(pkt);
index 7b8079c75429c46484b49ae528563c6e4fa8819a..40ebfade3db02f2b1b69a8f988ae3838150e0d93 100644 (file)
@@ -528,6 +528,7 @@ const char *kr_strptime_diff(const char *format, const char *time1_str,
 /* Trivial non-inline wrappers, to be used in lua. */
 KR_EXPORT void kr_rrset_init(knot_rrset_t *rrset, knot_dname_t *owner,
                                uint16_t type, uint16_t rclass, uint32_t ttl);
+KR_EXPORT uint16_t kr_pkt_has_dnssec(const knot_pkt_t *pkt);
 KR_EXPORT uint16_t kr_pkt_qclass(const knot_pkt_t *pkt);
 KR_EXPORT uint16_t kr_pkt_qtype(const knot_pkt_t *pkt);
 KR_EXPORT uint32_t kr_rrsig_sig_inception(const knot_rdata_t *rdata);