diff options
author | Henryk Plötz <henryk@ploetzli.ch> | 2014-10-03 20:04:14 +0200 |
---|---|---|
committer | Henryk Plötz <henryk@ploetzli.ch> | 2014-10-03 20:04:14 +0200 |
commit | c44d8b51ffb5a413f8bbdbd9991bbc573853e397 (patch) | |
tree | e7f2e644de620879f610c909c405cbc4e44d6062 /axfrdns.c | |
parent | 0e5b2871ca6456b01d4bf037a6e68badf1ff1a41 (diff) | |
download | tinydnssec-c44d8b51ffb5a413f8bbdbd9991bbc573853e397.tar.gz tinydnssec-c44d8b51ffb5a413f8bbdbd9991bbc573853e397.tar.bz2 |
Apply patch djbdns-1.05-test27.diff.bz2
Source was http://www.fefe.de/dns/djbdns-1.05-test27.diff.bz2, SHA1 f0380ec1866f49c0bcf6369a923ac0a4a5095da8
Diffstat (limited to 'axfrdns.c')
-rw-r--r-- | axfrdns.c | 23 |
1 files changed, 7 insertions, 16 deletions
@@ -21,6 +21,8 @@ #include "scan.h" #include "qlog.h" #include "response.h" +#include "ip6.h" +#include "clientloc.h" extern int respond(char *,char *,char *); @@ -123,7 +125,7 @@ void get(char *buf,unsigned int len) } } -char ip[4]; +char ip[16]; unsigned long port; char clientloc[2]; @@ -231,22 +233,11 @@ void doaxfr(char id[2]) axfrcheck(zone); + find_client_loc(clientloc, ip); + tai_now(&now); cdb_init(&c,fdcdb); - byte_zero(clientloc,2); - key[0] = 0; - key[1] = '%'; - byte_copy(key + 2,4,ip); - r = cdb_find(&c,key,6); - if (!r) r = cdb_find(&c,key,5); - if (!r) r = cdb_find(&c,key,4); - if (!r) r = cdb_find(&c,key,3); - if (!r) r = cdb_find(&c,key,2); - if (r == -1) die_cdbread(); - if (r && (cdb_datalen(&c) == 2)) - if (cdb_read(&c,clientloc,2,cdb_datapos(&c)) == -1) die_cdbread(); - cdb_findstart(&c); for (;;) { r = cdb_findnext(&c,zone,zonelen); @@ -328,10 +319,10 @@ int main() axfr = env_get("AXFR"); x = env_get("TCPREMOTEIP"); - if (x && ip4_scan(x,ip)) + if (x && ip6_scan(x,ip)) ; else - byte_zero(ip,4); + byte_zero(ip,16); x = env_get("TCPREMOTEPORT"); if (!x) x = "0"; |