1 Patch enables including subdomain data; it is done by following entry in data:
2 Idomain.somewhere:/domain/data.cdb
3 Now data for domain.somewhere is looked up in /domain/data.cdb (relative to
4 tinydns root dir, /etc/tinydns/root in default setup).
6 diff -u djbdns-1.05/tdlookup.c djbdns-1.05-include/tdlookup.c
7 --- djbdns-1.05/tdlookup.c Sun Feb 11 22:11:45 2001
8 +++ djbdns-1.05-include/tdlookup.c Fri May 7 13:10:14 2004
10 static unsigned int dpos;
13 +static char dfile[512];
15 static int find(char *d,int flagwild)
18 if (r == -1) return 0;
19 if (byte_equal(type,2,DNS_T_SOA)) flagauthoritative = 1;
20 if (byte_equal(type,2,DNS_T_NS)) flagns = 1;
21 + if (byte_equal(type,2,"\0\0")) {
22 + if(dlen-dpos>sizeof(dfile)) return 0;
23 + byte_copy(dfile,dlen-dpos,data+dpos);
28 if (!*control) return 0; /* q is not within our bailiwick */
37 - fd = open_read("data.cdb");
38 + byte_copy(dfile,9,"data.cdb\0");
40 + fd = open_read(dfile);
41 if (fd == -1) return 0;
52 diff -u djbdns-1.05/tinydns-data.c djbdns-1.05-include/tinydns-data.c
53 --- djbdns-1.05/tinydns-data.c Sun Feb 11 22:11:45 2001
54 +++ djbdns-1.05-include/tinydns-data.c Fri May 7 13:05:25 2004
56 if (cdb_make_add(&cdb,key.s,key.len,loc,2) == -1)
61 + if (!dns_domain_fromdot(&d1,f[0].s,f[0].len)) nomem();
62 + if(!stralloc_0(&f[1])) nomem();
66 + rr_start("\0\0",ttl,ttd,loc);
67 + rr_add(f[1].s,f[1].len);
71 if (!dns_domain_fromdot(&d1,f[0].s,f[0].len)) nomem();