chiark / gitweb /
Support for reverse queries.
[adns.git] / src / internal.h
index 7ee8671fbc2967f2b3575e22a4e405602d3c2aca..89327ec89fb785396cedf19af3d41d79a0062daf 100644 (file)
@@ -5,7 +5,12 @@
  * - comments regarding library data structures
  */
 /*
- *  This file is part of adns, which is Copyright (C) 1997-1999 Ian Jackson
+ *  This file is
+ *    Copyright (C) 1997-1999 Ian Jackson <ian@davenant.greenend.org.uk>
+ *
+ *  It is part of adns, which is
+ *    Copyright (C) 1997-1999 Ian Jackson <ian@davenant.greenend.org.uk>
+ *    Copyright (C) 1999 Tony Finch <dot@dotat.at>
  *  
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -33,6 +38,7 @@ typedef unsigned char byte;
 #include <unistd.h>
 #include <signal.h>
 #include <errno.h>
+#include <string.h>
 
 #include <sys/time.h>
 
@@ -58,6 +64,12 @@ typedef unsigned char byte;
 
 #define MAX_POLLFDS  ADNS_POLLFDS_RECOMMENDED
 
+typedef enum {
+  cc_user,
+  cc_entex,
+  cc_freq
+} consistency_checks;
+
 typedef enum {
   rcode_noerror,
   rcode_formaterror,
@@ -205,14 +217,14 @@ struct adns__query {
 
   /* Possible states:
    *
-   *  state   Queue   child  id   nextudpserver  sentudp     failedtcp
+   *  state   Queue   child  id   nextudpserver  udpsent     tcpfailed
    *                             
    *  tosend  NONE    null   >=0  0              zero        zero
    *  tosend  timew   null   >=0  any            nonzero     zero
    *  tosend  NONE    null   >=0  any            nonzero     zero
    *                             
-   *  tcpwait timew   null   >=0  irrelevant     zero        any
-   *  tcpsent timew   null   >=0  irrelevant     zero        any
+   *  tcpwait timew   null   >=0  irrelevant     any         any
+   *  tcpsent timew   null   >=0  irrelevant     any         any
    *                             
    *  child   childw  set    >=0  irrelevant     irrelevant  irrelevant
    *  child   NONE    null   >=0  irrelevant     irrelevant  irrelevant
@@ -479,7 +491,7 @@ void adns__query_fail(adns_query qu, adns_status stat);
 /* From reply.c: */
 
 void adns__procdgram(adns_state ads, const byte *dgram, int len,
-                    int serv, struct timeval now);
+                    int serv, int viatcp, struct timeval now);
 
 /* From types.c: */
 
@@ -632,6 +644,14 @@ void adns__fdevents(adns_state ads,
                    int maxfd, const fd_set *readfds,
                    const fd_set *writefds, const fd_set *exceptfds,
                    struct timeval now, int *r_r);
+int adns__internal_check(adns_state ads,
+                        adns_query *query_io,
+                        adns_answer **answer,
+                        void **context_r);
+
+/* From check.c: */
+
+void adns__consistency(adns_state ads, adns_query qu, consistency_checks cc);
 
 /* Useful static inline functions: */
 
@@ -650,6 +670,7 @@ static inline int ctype_digit(int c) { return c>='0' && c<='9'; }
 static inline int ctype_alpha(int c) {
   return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
 }
+static inline int ctype_822special(int c) { return strchr("()<>@,;:\\\".[]",c) != 0; }
 
 static inline int errno_resources(int e) { return e==ENOMEM || e==ENOBUFS; }