#include <errno.h>
#include <string.h>
#include <stdlib.h>
+#include <stdbool.h>
#include <sys/time.h>
#define DNS_IDOFFSET 0
#define DNS_CLASS_IN 1
-#define DNS_INADDR_ARPA "in-addr", "arpa"
-#define DNS_IP6_ARPA "ip6", "arpa"
-
#define MAX_POLLFDS ADNS_POLLFDS_RECOMMENDED
/* Some preprocessor hackery */
struct timeval now;
} parseinfo;
-#define NREVDOMAINS 2 /* keep in sync with addrfam! */
+#define MAXREVLABELS 34 /* keep in sync with addrfam! */
struct revparse_state {
- unsigned map; /* which domains are still live */
- byte ipv[NREVDOMAINS][32]; /* address components so far */
+ uint16_t labstart[MAXREVLABELS];
+ uint8_t lablen[MAXREVLABELS];
};
union checklabel_state {
* allocate an output buffer failed.
*/
-extern int adns__revparse_label(struct revparse_state *rps, int labnum,
- const char *dgram,
- int labstart, int lablen);
+extern bool adns__revparse_label(struct revparse_state *rps, int labnum,
+ const char *dgram,
+ int labstart, int lablen);
/* Parse a label in a reverse-domain name, given its index labnum (starting
* from zero), a pointer to its contents (which need not be null-terminated),
* and its length. The state in *rps is initialized implicitly when labnum
* is zero.
*
- * Returns zero if the parse was successful, nonzero if the domain name is
- * definitely invalid and the parse must be abandoned.
+ * Returns 1 if the parse is proceeding successfully, 0 if the domain
+ * name is definitely invalid and the parse must be abandoned.
*/
-extern int adns__revparse_done(struct revparse_state *rps,
- const char *dgram, int nlabels,
- adns_rrtype *rrtype_r, adns_sockaddr *addr_r);
+extern bool adns__revparse_done(struct revparse_state *rps,
+ const char *dgram, int nlabels,
+ adns_rrtype *rrtype_r, adns_sockaddr *addr_r);
/* Finishes parsing a reverse-domain name, given the total number of
* labels in the name. On success, fills in the af and protocol
* address in *addr_r, and the forward query type in *rrtype_r
- * (because that turns out to be useful). Returns nonzero if the
- * parse must be abandoned.
+ * (because that turns out to be useful). Returns 1 if the parse
+ * was successful.
*/
/* From setup.c: */