X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Finternal.h;h=00cf8258b7b6849382d923e002200cafc2c2c719;hb=7ba7a232de0516d2cce934bdc91627b33b46ef47;hp=5312fe1ac1520f1ea3241c340e2ceca09750ff0e;hpb=0b062eccea099e977fddf82c4d08167c638a10aa;p=adns.git diff --git a/src/internal.h b/src/internal.h index 5312fe1..00cf825 100644 --- a/src/internal.h +++ b/src/internal.h @@ -6,14 +6,15 @@ */ /* * This file is part of adns, which is - * Copyright (C) 1997-2000,2003,2006 Ian Jackson + * Copyright (C) 1997-2000,2003,2006,2014-2016 Ian Jackson + * Copyright (C) 2014 Mark Wooding * Copyright (C) 1999-2000,2003,2006 Tony Finch * Copyright (C) 1991 Massachusetts Institute of Technology * (See the file INSTALL for full details.) * * 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 - * the Free Software Foundation; either version 2, or (at your option) + * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, @@ -22,8 +23,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * along with this program; if not, write to the Free Software Foundation. */ #ifndef ADNS_INTERNAL_H_INCLUDED @@ -70,9 +70,6 @@ typedef unsigned char byte; #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 */ @@ -132,10 +129,10 @@ typedef struct { 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 { @@ -210,7 +207,7 @@ typedef struct typeinfo { * because lablen is zero. */ - void (*postsort)(adns_state ads, void *array, int nrrs,int rrsz, + void (*postsort)(adns_state ads, void *array, int nrrs, int rrsz, const struct typeinfo *typei); /* Called immediately after the RRs have been sorted, and may rearrange * them. (This is really for the benefit of SRV's bizarre weighting @@ -375,8 +372,8 @@ struct adns__state { struct query_queue udpw, tcpw, childw, output, intdone; adns_query forallnext; int nextid, tcpsocket; - struct udpsocket { int af; int fd; } udpsocket[MAXUDP]; - int nudp; + struct udpsocket { int af; int fd; } udpsockets[MAXUDP]; + int nudpsockets; vbuf tcpsend, tcprecv; int nservers, nsortlist, nsearchlist, searchndots, tcpserver, tcprecv_skip; enum adns__tcpstate { @@ -397,6 +394,7 @@ struct adns__state { adns_sockaddr base, mask; } sortlist[MAXSORTLIST]; char **searchlist; + unsigned config_report_unknown:1; unsigned short rand48xsubi[3]; }; @@ -453,8 +451,9 @@ extern const void *adns__sockaddr_addr(const struct sockaddr *sa); */ char *adns__sockaddr_ntoa(const struct sockaddr *sa, char *buf); -/* Convert sa to a string, and write it to buf, which must be at least - * ADNS_ADDR2TEXT_BUFLEN bytes long (unchecked). Return buf; can't fail. +/* Converts sa to a string, and writes it to buf, which must be at + * least ADNS_ADDR2TEXT_BUFLEN bytes long (unchecked). Returns buf; + * can't fail. */ extern int adns__make_reverse_domain(const struct sockaddr *sa, @@ -472,26 +471,26 @@ extern int adns__make_reverse_domain(const struct sockaddr *sa, * 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: */ @@ -709,7 +708,7 @@ void adns__reset_preserved(adns_query qu); void adns__cancel(adns_query qu); void adns__query_done(adns_query qu); -void adns__query_fail(adns_query qu, adns_status stat); +void adns__query_fail(adns_query qu, adns_status st); void adns__cancel_children(adns_query qu); void adns__returning(adns_state ads, adns_query qu); @@ -867,8 +866,6 @@ void adns__update_expires(adns_query qu, unsigned long ttl, * now + ttl. */ -int vbuf__append_quoted1035(vbuf *vb, const byte *buf, int len); - bool adns__labels_equal(const byte *a, int al, const byte *b, int bl); /* From event.c: */