summaryrefslogtreecommitdiffstats
path: root/perl-install/unused/dns.pm
blob: 5e6bb5f5b54da419d93c2e5eeff2eb20fbea3b03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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;
}