diff options
Diffstat (limited to 'perl-install/unused/dns.pm')
-rw-r--r-- | perl-install/unused/dns.pm | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/perl-install/unused/dns.pm b/perl-install/unused/dns.pm new file mode 100644 index 000000000..baad57f9e --- /dev/null +++ b/perl-install/unused/dns.pm @@ -0,0 +1,64 @@ +use diagnostics; +use strict; + +# This is dumb, but glibc doesn't like to do hostname lookups w/o libc.so + + +#TODO TODO +sub doQuery { +# my ($query, $queryType, $domainName, $ipNum) = @_; +# +# _res.retry = 2; +# +# len = res_search(query, C_IN, queryType, (void *) &response, +# sizeof(response)); +# if (len <= 0) return -1; +# +# if (ntohs(response.hdr.rcode) != NOERROR) return -1; +# ancount = ntohs(response.hdr.ancount); +# if (ancount < 1) return -1; +# +# data = response.buf + sizeof(HEADER); +# end = response.buf + len; +# +# # skip the question +# data += dn_skipname(data, end) + QFIXEDSZ; +# +# # parse the answer(s) +# while (--ancount >= 0 && data < end) { +# +# # skip the domain name portion of the RR record +# data += dn_skipname(data, end); +# +# # get RR information +# GETSHORT(type, data); +# data += INT16SZ; # skipp class +# data += INT32SZ; # skipp TTL +# GETSHORT(len, data); +# +# if (type == T_PTR) { +# # we got a pointer +# len = dn_expand(response.buf, end, data, name, sizeof(name)); +# if (len <= 0) return -1; +# if (queryType == T_PTR && domainName) { +# # we wanted a pointer +# *domainName = malloc(strlen(name) + 1); +# strcpy(*domainName, name); +# return 0; +# } +# } else if (type == T_A) { +# # we got an address +# if (queryType == T_A && ipNum) { +# # we wanted an address +# memcpy(ipNum, data, sizeof(*ipNum)); +# return 0; +# } +# } +# +# # move ahead to next RR +# data += len; +# } +# +# return -1; +} + |