]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
packet: add ldns_pkt_edns_unassigned and ldns_pkt_set_edns_unassigned
authorJan Vcelak <jv@fcelda.cz>
Mon, 10 Apr 2017 16:22:52 +0000 (18:22 +0200)
committerJan Vcelak <jv@fcelda.cz>
Mon, 10 Apr 2017 16:56:55 +0000 (18:56 +0200)
ldns/packet.h
packet.c

index e29941936638aa5079b386a3ab0880734925cf45..2e5ee8bde1a12287540c8c37223d0132dc6d63de 100644 (file)
@@ -706,6 +706,18 @@ bool ldns_pkt_edns_do(const ldns_pkt *packet);
  */
 void ldns_pkt_set_edns_do(ldns_pkt *packet, bool value);
 
+/**
+ * return the packet's EDNS header bits that are unassigned.
+ */
+uint16_t ldns_pkt_edns_unassigned(const ldns_pkt *packet);
+
+/**
+ * Set the packet's EDNS header bits that are unassigned.
+ * \param[in] packet the packet
+ * \param[in] value the value
+ */
+void ldns_pkt_set_edns_unassigned(ldns_pkt *packet, uint16_t value);
+
 /**
  * returns true if this packet needs and EDNS rr to be sent.
  * At the moment the only reason is an expected packet
index 95f8f3fe4d248b1ad05faa443bee0dfd850e7ea5..3a8488d82824f543194cbb437286ab988b1bdb1e 100644 (file)
--- a/packet.c
+++ b/packet.c
@@ -26,6 +26,7 @@
  */
 
 #define LDNS_EDNS_MASK_DO_BIT 0x8000
+#define LDNS_EDNS_MASK_UNASSIGNED (0xFFFF & ~LDNS_EDNS_MASK_DO_BIT)
 
 /* TODO defines for 3600 */
 /* convert to and from numerical flag values */
@@ -242,6 +243,19 @@ ldns_pkt_set_edns_do(ldns_pkt *packet, bool value)
        }
 }
 
+uint16_t
+ldns_pkt_edns_unassigned(const ldns_pkt *packet)
+{
+       return (packet->_edns_z & LDNS_EDNS_MASK_UNASSIGNED);
+}
+
+void
+ldns_pkt_set_edns_unassigned(ldns_pkt *packet, uint16_t value)
+{
+       packet->_edns_z = (packet->_edns_z & ~LDNS_EDNS_MASK_UNASSIGNED)
+                       | (value & LDNS_EDNS_MASK_UNASSIGNED);
+}
+
 ldns_rdf *
 ldns_pkt_edns_data(const ldns_pkt *packet)
 {