aboutsummaryrefslogtreecommitdiff
path: root/axfrdns.c
diff options
context:
space:
mode:
authorHenryk Plötz <henryk@ploetzli.ch>2014-10-03 20:04:14 +0200
committerHenryk Plötz <henryk@ploetzli.ch>2014-10-03 20:04:14 +0200
commitc44d8b51ffb5a413f8bbdbd9991bbc573853e397 (patch)
treee7f2e644de620879f610c909c405cbc4e44d6062 /axfrdns.c
parent0e5b2871ca6456b01d4bf037a6e68badf1ff1a41 (diff)
downloadtinydnssec-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.c23
1 files changed, 7 insertions, 16 deletions
diff --git a/axfrdns.c b/axfrdns.c
index 7079850..85723c9 100644
--- a/axfrdns.c
+++ b/axfrdns.c
@@ -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";