From d1e8fd826059fd04e01a818766a8215c685cab56 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 2 Jul 2011 00:01:31 +0100 Subject: [PATCH] resolver: support IPv4 address literals Signed-off-by: Ian Jackson IP ADDR LIT size_t strlen --- resolver.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/resolver.c b/resolver.c index f60b112..033ddc1 100644 --- a/resolver.c +++ b/resolver.c @@ -6,6 +6,8 @@ #error secnet requires ADNS version 1.0 or above #endif #include +#include +#include struct adns { @@ -28,6 +30,20 @@ static bool_t resolve_request(void *sst, cstring_t name, struct adns *st=sst; struct query *q; int rv; + const int maxlitlen=50; + + ssize_t l=strlen(name); + if (name[0]=='[' && l2 && name[l-1]==']') { + char trimmed[maxlitlen+1]; + memcpy(trimmed,name+1,l-2); + trimmed[l-2]=0; + struct in_addr ia; + if (inet_aton(trimmed,&ia)) + cb(cst,&ia); + else + cb(cst,0); + return True; + } q=safe_malloc(sizeof *q,"resolve_request"); q->cst=cst; -- 2.30.2