From c44d8b51ffb5a413f8bbdbd9991bbc573853e397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henryk=20Pl=C3=B6tz?= Date: Fri, 3 Oct 2014 20:04:14 +0200 Subject: Apply patch djbdns-1.05-test27.diff.bz2 Source was http://www.fefe.de/dns/djbdns-1.05-test27.diff.bz2, SHA1 f0380ec1866f49c0bcf6369a923ac0a4a5095da8 --- okclient.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'okclient.c') diff --git a/okclient.c b/okclient.c index a648c02..9a0d3c6 100644 --- a/okclient.c +++ b/okclient.c @@ -2,24 +2,34 @@ #include #include "str.h" #include "ip4.h" +#include "ip6.h" +#include "byte.h" #include "okclient.h" -static char fn[3 + IP4_FMT]; +static char fn[3 + IP6_FMT]; -int okclient(char ip[4]) +int okclient(char ip[16]) { struct stat st; int i; + char sep; fn[0] = 'i'; fn[1] = 'p'; fn[2] = '/'; - fn[3 + ip4_fmt(fn + 3,ip)] = 0; + if (byte_equal(ip,12,V4mappedprefix)) { + fn[3 + ip4_fmt(fn + 3,ip+12)] = 0; + sep='.'; + } else { + fn[3 + ip6_fmt(fn + 3,ip)] = 0; + sep=':'; + } for (;;) { + if (!fn[3]) return 0; if (stat(fn,&st) == 0) return 1; /* treat temporary error as rejection */ - i = str_rchr(fn,'.'); + i = str_rchr(fn,sep); if (!fn[i]) return 0; fn[i] = 0; } -- cgit v1.2.3