chiark / gitweb /
Finished CNAME handling. Except that there's no testing, and it
[adns] / src / internal.h
index 26d8746e3901e043dfaa7aadb4f91740b267a458..40da52d5bda5ffd05343b8e24a6780969d6cda3c 100644 (file)
@@ -93,7 +93,10 @@ typedef enum {
 } dns_rcode;
 
 enum {
-  adns__qf_senddirect = 0x00100000 /* don't call the `query_send' type hook */
+  adns__qf_senddirect = 0x00100000,/* don't call the `query_send' type hook */
+  adns__qf_nosend     = 0x00200000,/* don't send the query when submitting */
+  adns__qf_addr_answer= 0x01000000,/* addr query received an answer */
+  adns__qf_addr_cname = 0x02000000 /* addr subquery performed on cname */
 };
 
 /* Shared data structures */
@@ -133,7 +136,7 @@ typedef struct {
   int nrevcomp;
   int revcompwd;
   adns_rrtype rrtype;
-  void *(*sockaddr_to_inaddr)(struct sockaddr *sa);
+  const void *(*sockaddr_to_inaddr)(const struct sockaddr *sa);
   int (*sockaddr_equalp)(const struct sockaddr *sa,
                         const struct sockaddr *sb);
   void (*prefix_mask)(int len, union gen_addr *a);
@@ -497,6 +500,10 @@ adns_status adns__internal_submit(adns_state ads, adns_query *query_r,
  * the memory for it is _taken over_ by this routine whether it
  * succeeds or fails (if it succeeds, the vbuf is reused for qu->vb).
  *
+ * If adns__qf_nosend is set in flags, then the query is not sent: doing
+ * whatever is necessary to send the query and link it onto the appropriate
+ * queue is left as the caller's responsibility.
+ *
  * *ctx is copied byte-for-byte into the query.
  *
  * When the child query is done, ctx->callback will be called.  The
@@ -547,8 +554,7 @@ void *adns__alloc_preserved(adns_query qu, size_t sz);
  *  answer->cname and answer->owner are _preserved.
  */
 
-void adns__transfer_interim(adns_query from, adns_query to,
-                           void *block, size_t sz);
+void adns__transfer_interim(adns_query from, adns_query to, void *block);
 /* Transfers an interim allocation from one query to another, so that
  * the `to' query will have room for the data when we get to makefinal
  * and so that the free will happen when the `to' query is freed