119991129 2 version: dnscache 0.50, alpha. not released yet. 319991223 4 version: dnscache 0.60, alpha. 519991224 6 internal: dns_sortip() takes length argument. 7 api: dns_ip4() sorts output. currently this means just random. 8 api: added socket_bind4_reuse(). removed reuse from bind4(). 9 ui: used bind4_reuse() for port 53, bind4() otherwise. 10 internal: eliminated some unused variables. 11 internal: prototypes in cdb.h, cdbmake.h, cdbmss.h. 12 internal: prototypes in case.h, env.h, fmt.h, scan.h, str.h. 13 internal: prototypes in stralloc.h. 14 internal: prototypes in error.h, strerr.h. 15 internal: prototypes in ndelay.h, open.h, seek.h. 16 internal: prototypes in sgetopt.h, subgetopt.h. 17 internal: prototypes in tai.h, taia.h. 18 internal: added some missing declarations. 19 bug: query.c checked void response_finishanswer() return code. 20 impact: cached responses were dropped on systems that 21 didn't follow the traditional C return behavior. fix: 22 obvious. tnx Giles Lean. 23 internal: switched from taia_addsec() to taia_uint(). 24 api: switched to uint16 for socket_* port numbers. 25 internal: integrated uint16_pack() and friends. 26 ui: dnscache allows (recursive) queries from port 53. 27 ui: dnscache has 10-second idle timer on TCP read/write. 28 ui: dnscache limits itself to 20 concurrent TCP connections. 29 internal: moved dns_domain_fromdot() to separate file. 30 ui: supported \X, \1, \12, \123 in dns_domain_fromdot(). 31 ui: supported \123 in dns_domain_todot_append(). 32 version: dnscache 0.61, alpha. 3319991230 34 api: added dns_ip4_qualify(). 35 api: added dns_resolvconfrewrite(). 36 ui: added dnsipq. 37 api: dns_ip4() checks for (strings of) IP addresses. 3820000106 39 port: Solaris needs /dev/udp, not just /dev/tcp. impact: 40 dnscache and tinydns would stop immediately under 41 Solaris. fix: create /dev/udp in configure; and have 42 tinydns create socket before chroot. tnx Louis Theran. 43 internal: moved dns_name4_domain() to dns_nd.c. 44 ui: tinydns no longer excludes screwy queries from its log. 45 internal: moved respond() to tdlookup.c under new name. 46 ui: added tinydns-get. 47 ui: rewrote tinydns-data for new data format. 48 internal: expanded rts to cover tinydns-data using tinydns-get. 4920000107 50 ui: tinydns-data allows arbitrary case in domain names. 51 ui: dnscache supports preconfigured servers for non-root 52 domains. 53 ui: dnscache uses textual addresses for preconfigured servers. 5420000108 55 ui: tinydns-data excludes the additional and authority sections 56 if doing so helps meet the 512-byte UDP limit. 57 version: dnscache 0.70, beta. 5820000114 59 internal: in log.c, ulong() now prints a uint64. 60 internal: added cache_motion, query_count, log_stats. 61 ui: dnscache now prints queries/motion stats after typical 62 response packets. 6320000115 64 internal: added droproot.c. used in tinydns and dnscache. 65 internal: moved tinydns log() to qlog.c under new name. 66 ui: added walldns, configure-wd. 67 ui: configure-td now creates an empty root/data. 68 ui: added tinydns-edit. 69 ui: configure-td now sets up root/add-{ns,childns,host,mx}. 7020000116 71 ui: renamed configure* as *-conf. 72 ui: added axfrdns, axfrdns-conf. 73 ui: added axfr-get. 74 ui: dnscache-conf 10.* or 192.168.* now sets IPSEND=0.0.0.0. 7520000117 76 ui: added pickdns, pickdns-conf, pickdns-data. 77 version: dnscache 0.75, beta. 7820000118 79 internal: address* -> address_* in pickdns-data.c. 80 internal: start writing cdb earlier in pickdns-data.c. 81 internal: keep track of namelen in pickdns-data.c. 82 ui: added client-location variability to pickdns, pickdns-data. 83 ui: qlog logs short packets. 84 ui: qlog logs header if RD or other unusual bits are set. 85 ui: qlog logs non-Internet classes. 86 api: dns_domain_todot_append() -> dns_domain_todot_cat(). 87 ui: axfr-get prints A records more nicely. tnx Russ Nelson. 88 ui: tinydns, pickdns, and walldns respond REFUSED to multiple 89 queries, strange classes, and strange header bits. 90 pickdns and walldns also respond REFUSED to unrecognized 91 domain names. 9220000120 93 ui: dns_resolvconfip() and dns_resolvconfrewrite() reread after 94 10 minutes or 10000 uses. 95 ui: dns_resolvconfrewrite() treats "domain" like "search". 96 ui: dns_resolvconfrewrite() supports $LOCALDOMAIN. 97 ui: dns_resolvconfrewrite() supports gethostname(). 98 api: dns_ip4_qualify() -> dns_ip4_qualify_rules(). new function 99 under the old name uses dns_resolvconfrewrite(). 100 internal: cleaned up log.h. 10120000121 102 port: the gcc 2.95.2 -O2 optimizer can destroy parameters in a 103 function that calls another function with a long long 104 argument. impact: gcc 2.95.2 kills dnscache in 105 log_query(). fix: pass log_stats() inputs by reference, 106 and pass uint64's through a variable inside log.c. 107 internal: introduced x_* in axfr-get. 108 internal: more format verification in axfr-get. 109 ui: minimal Z support in tinydns-data. 110 ui: axfr-get prints Z lines. 111 ui: juggled axfr-get to support BIND 8's many-answers option. 112 ui: axfr-get prints common characters readably rather than in 113 octal. tnx Karsten Thygesen. 114 ui: install copies VERSION into .../etc. 11520000122 116 ui: dns_domain_todot_cat() now lowercases everything. 117 internal: split printrecord.c out of tinydns-get. 118 ui: added dnstrace. 11920000123 120 version: dnscache 0.76, beta. 12120000124 122 port: Solaris needs socket libraries for dnstrace. impact: 123 couldn't compile under Solaris. fix: use socket.lib. 124 tnx Karsten Thygesen. 12520000126 126 ui: dns_resolvconfip() supports $DNSCACHEIP. 127 ui: changed tinydns-get arg order. 128 internal: split printpacket.c out of tinydns-get. 129 ui: added dnsquery. 130 internal: merged case.a, fs.a, str.a, uint.a, ip4.a into byte.a. 131 internal: merged strerr.a into buffer.a. 132 internal: merged stralloc.a, getln.a into alloc.a. 133 internal: merged error.a, open.a, seek.a, ndelay.a, socket.a 134 into unix.a. 135 internal: used catulong in axfr-get.c. 136 ui: packet-parsing errors produce error_proto. 137 ui: axfr-get goes out of its way to reject wildcards. 138 internal: introduced generic-conf.c. 139 internal: upgraded timeoutread and timeoutwrite to iopause. 14020000127 141 ui: revamped details of the log formats. 142 ui: full Z support in tinydns-data. 143 ui: axfr-get accepts authority records and additional records. 144 ui: axfrdns tries to imitate BIND's handling of glue. 145 internal: expanded rts to try out the servers and *-conf. 146 ui: added rbldns. 14720000128 148 ui: increased MAXNS to 16 in query.h. 14920000129 150 version: DNScache 0.80, beta. 15120000205 152 ui: tinydns-data supports ^, for the benefit of people stuck 153 behind reverse CNAMEs. tnx Petr Novotny. 15420000206 155 ui: rbldns supports $. 156 ui: tinydns-data supports C. CNAME is overridden by NS; CNAME 157 overrides other records; no multiple CNAMEs. 158 ui: axfr-get supports C. 159 ui: axfr-get no longer rejects wildcards, except for NS. 160 internal: eliminated flagempty from tinydns-data. 161 internal: cleaned up delegation/NXDOMAIN loops in tinydns-data. 162 internal: reorganized packet_start interface in tinydns-data. 163 ui: tinydns-data supports BIND-style wildcards, except for NS. 164 version: DNScache 0.81, beta. 16520000207 166 ui: renamed dnsquery as dnsq, to eliminate name conflict with 167 Beecher dnsquery program. tnx Anand Buddhdev. 16820000208 169 ui: tinydns-edit supports add alias. 170 ui: tinydns-conf sets up root/add-alias. 17120000209 172 ui: dnscache-conf now sets IPSEND=0.0.0.0 in all cases. 173 ui: dnsq and dnstrace allow server names. 174 ui: dnsq and dnstrace allow type names. 17520000210 176 internal: response_tc() reduces len, simplifying udprespond(). 177 ui: response_tc() now truncates immediately after query. this 178 should work around the Squid parsing bug reported by 179 Stuart Henderson. 18020000211 181 ui: tinydns-get allows type names. 182 ui: tinydns-data prints query name for >512 error. tnx Uwe Ohse. 183 version: DNScache 0.82, beta. 18420000212 185 ui: dns_transmit starts with loop 1 for recursive queries. 186 ui: dnscache tries to allocate 128K of incoming UDP buffer 187 space. tnx Jeremy Hansen. 18820000213 189 ui: tinydns tries to allocate 64K of incoming UDP buffer space. 190 internal: renamed response_*answer as response_r*. 191 internal: expanded response_rfinish to allow au and ar. 192 internal: expanded response_rstart to allow any ttl. 193 internal: rewrote tinydns-data, tinydns, tinydns-get, axfrdns 194 for compact new data.cdb format. a few ui effects: empty 195 nodes produce NXDOMAIN; wildcards affect empty nodes. 196 ui: response_addname() tries more extensive compression. 19720000215 198 ui: tinydns-edit takes fn arguments. tnx Jason R. Mastaler. 19920000218 200 internal: upgraded to new cdb library. 201 internal: added globalip(). 202 ui: dnscache assigns IP addresses to dotted-decimal domain 203 names in canonical form. 204 internal: merged handling of C and ^ in tinydns-data. 205 port: FreeBSD 3.4-RELEASE poll() doesn't think that regular 206 files are readable. impact: under FreeBSD 3.4-RELEASE, 207 dnsfilter hangs waiting to read from regular files. tnx 208 Kenji Rikitake. fix: check for this bug in trypoll.c. 20920000219 210 ui: tinydns-data supports time-to-die. 211 ui: changed home directory from /usr/local/dnscache to 212 /usr/local; moved @ from home/etc to home/etc/dnscache. 213 internal: reorganized response.c. 21420000220 215 ui: tinydns-data allows omitted numeric fields in Z lines. tnx 216 Timothy L. Mayo. 217 version: DNScache 0.85, beta. 21820000222 219 ui: dns_transmit_get() pauses after server failure, if udploop 220 is 2. 221 internal: sped up name handling in response.c. 22220000223 223 ui: dnscache ignores some garbage in queries: AA, !RD, RA, Z, 224 RCODE, AN, AU, AR. (note that responses still say RD.) 225 this allows bogus queries from Ultrix versions of BIND. 226 internal: split dd.c out of query.c. 227 internal: split server.c out of tinydns. 228 internal: rewrote walldns, pickdns, rbldns to use server.c. 229 ui: server.c allows some garbage in queries: RA, Z, RCODE, AN, 230 AU, AR. 231 ui: axfrdns logs packets. 232 ui: walldns supports dotted-decimal IP addresses. 23320000224 234 ui: revamped qlog, again. 235 ui: better error message in dnscache-conf.c. tnx Chris Johnson. 23620000225 237 version: DNScache 0.90, gamma. 23820000226 239 internal: dnscache-conf sets up dnscache/run to avoid env. tnx 240 Chris Cappuccio. 24120000227 242 ui: tinydns-data uses server name instead of a.ns.domain for 243 automatic primary in SOA. tnx Frank Tegtmeyer. 24420000228 245 bug: axfrdns doesn't set aa bit in responses. impact: named-xfer 246 refuses to do zone transfers from axfrdns. fix: set aa 247 bit. tnx Peter Hunter. 248 ui: server.c now accepts packets from low ports. sigh. 24920000229 250 version: DNScache 0.91, gamma. 25120000307 252 internal: switched from slurp to openreadclose. 25320000308 254 ui: dns_transmit_get() pauses after recv() failure (such as 255 connection-refused), if udploop is 2. 256 ui: tinydns-data uses refresh 16384, retry 2048, expire 1048576. 257 tnx Frank Tegtmeyer. 258 version: DNScache 0.92, gamma. 25920000314 260 portability problem: the poll() emulation in RedHat 5.1 doesn't 261 clear revents when select() returns 0. tnx Petr Novotny. 262 impact: dns_transmit_get() never times out; 263 dns_resolve() busy-loops. fix: clear revents before 264 poll(). 26520000315 266 ui: axfr-get grabs zones when serials drop. tnx Frank Tegtmeyer. 267 version: DNScache 0.93, gamma. 26820000323 269 ui: dns_rcip() accepts 0.0.0.0 in /etc/resolv.conf as 127.0.0.1. 270 tnx Chris Saia. 27120000325 272 version: DNScache 1.00. 27320000914 274 ui: axfr-get decodes PTR. tnx to various people. 275 ui: added dnsqr. 27620000915 277 portability problem: on some buggy kernels, accept() fails to 278 copy O_NONBLOCK. tnx Pavel Kankovsky. impact: with these 279 kernels, dnscache hangs if a TCP connection times out. 280 fix: ndelay_on() after accept(). 281 ui: dnscache discards non-recursive queries. 282 ui: *-conf use envdir in */run. 283 internal: reorganized seed_addtime() calls in dnscache-conf. 284 ui: tinydns-data prohibits PTR in generic records. 28520000917 286 ui: dns_transmit_get() does not pause after most recv() errors. 287 still pauses after connection-refused when udploop is 2. 288 version: djbdns 1.01. 28920000922 290 portability problem: Linux distributions use bash as /bin/sh; 291 bash destroys $UID. dorks. impact: dnscache and axfrdns 292 run as root. fix: envdir, then sh, then envuidgid. but 293 /bin/sh really has to stop polluting the environment. 29420000923 295 ui: install /etc/dnsroots.global. dnscache-conf tries 296 dnsroots.local, then dnsroots.global. 297 ui: no longer install home/etc/dnscache. 298 version: djbdns 1.02. 29920001224 300 ui: new dnstrace output format. 301 ui: dnstrace shows all servers providing each ns/a line. 302 ui: added dnstracesort. 30320001225 304 internal: response_rstart() and response_cname() use uint32 ttl. 305 internal: added response_hidettl(). 306 internal: cache_get() returns ttl. 307 internal: dnscache keeps track of ttls for aliases. 308 ui: dnscache returns ttl unless $HIDETTL is set. 309 ui: dnscache returns ttl 655360 for localhost et al. 31020001226 311 ui: dnscache supports $FORWARDONLY. tnx to several people for 312 the suggestion. tnx Dan Peterson for sample code. 313 ui: dnscache now logs sequential query numbers, not indices. 314 internal: revamped dnscache to separate udp from tcp. 315 ui: dnscache reports uactive, tactive separately. 316 ui: dnscache reports tcpopen/tcpclose by port and ip. 317 ui: dnscache artificially times out oldest UDP query if UDP 318 table is full, and oldest TCP connection if TCP table is 319 full. 320 ui: dnscache reports broken pipe when a TCP client sends FIN. 32120001228 322 ui: dnstrace supports dd. 323 ui: dnscache logs stats when it handles 1.0.0.127.in-addr.arpa. 324 ui: pickdns actively refuses queries for unknown types. 325 ui: pickdns responds to MX queries. tnx Mike Batchelor. 326 internal: added const at various places. 327 internal: removed some unused variables. 328 internal: used time_t in tai_now.c. 329 internal: used stdlib.h in alloc.c. 330 api: split dns_domain_suffix() into suffix(), suffixpos(). 331 internal: switched to buffer_unix*. 332 internal: included unistd.h for various declarations. 33320010103 334 ui: increased maximum data size from 512 bytes to 32767 bytes in 335 tinydns, tinydns-get, axfrdns. allows big TXT records. 336 ui: dnsmx reformats name when it prints an artificial 0 MX. 33720010105 338 ui: increased MAXLEVEL to 5. the Internet is becoming more 339 glueless every day. 34020010106 341 version: djbdns 1.03. 34220010113 343 ui: increased MAXALIAS to 16. 344 ui: dnscache no longer caches SERVFAIL. per-ip is obviously the 345 way to go. 346 ui: tinydns et al. now respond FORMERR to non-Internet-class 347 queries. 348 ui: tdlookup now returns A records in a random order in the 349 answer section, and truncates the list after 8 records. 350 ui: tinydns-data skips lines starting -. 35120010114 352 internal: documented the tinydns data.cdb format. 353 ui: tinydns-data, tinydns, tinydns-get, axfrdns support client 354 differentiation. 355 ui: dnsqr aborts if it is given an extra argument. 35620010117 357 ui: dnstracesort removes duplicate lines. 358 ui: dnstracesort prints glue. 359 ui: dnstrace uses a ``start'' IP address for the root glue. 36020010121 361 version: djbdns 1.04. 36220010206 363 internal: response_query() takes a class argument. 364 internal: query_start() takes a class argument. 365 internal: packetquery() takes a class argument. 366 ui: tinydns et al., axfrdns, and dnscache repeat qclass * in 367 response to bogus * queries. tnx Mike Batchelor. 368 ui: axfrdns rejects queries for weird classes. 369 ui: axfrdns uses query ID instead of ID 0 in the series of AXFR 370 response messages between the SOAs, to support the AXFR 371 client in BIND 9. 372 ui: axfrdns sets AA in the series of AXFR response messages. 37320010211 374 ui: servers print starting message. 375 internal: some respond() declarations. 376 version: djbdns 1.05. 377