* - 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
#include <unistd.h>
#include <signal.h>
#include <errno.h>
+#include <string.h>
#include <sys/time.h>
#define MAX_POLLFDS ADNS_POLLFDS_RECOMMENDED
typedef enum {
+ cc_user,
+ cc_entex,
+ cc_freq
+} consistency_checks;
+
+typedef enum {
rcode_noerror,
rcode_formaterror,
rcode_servfail,
/* 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
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: */
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; }