The DNS client has a test program, dns1.c, which tests many of
the features of the DNS client and the functions
gethostbyname(),
gethostbyaddr()
,
getaddrinfo()
,
getnameinfo()
.
In order for this test to work, a DNS server must be configured with a number of names and addresses. The following is an example forward address resolution database for bind v9, which explains the requirements.
$TTL 680400 @ IN SOA lunn.org. andrew.lunn.lunn.org ( 2003041801 ; serial 10800 ; refresh 1800 ; retry 3600000 ; expire 259200) ; mimimum IN NS londo.lunn.org. hostnamev4 IN A 192.168.88.1 cnamev4 IN CNAME hostnamev4 hostnamev6 IN AAAA fec0::88:4:3:2:1 cnamev6 IN CNAME hostnamev6 hostnamev46 IN A 192.168.88.2 hostnamev46 IN AAAA fec0::88:4:3:2:2 cnamev46 IN CNAME hostnamev46 |
The actual names and addresses do not matter, since they are configurable in the test. What is important is the relationship between the names and the addresses and there family. ie hostnamev4 should map to one IPv4 address. hostnamev46 should map to both an IPv4 and an IPv6 address. cnamev4 should be a CNAME record for hostname4. Reverse lookup information is also needed by the test.
The information placed into the DNS server is also need in the test case. A structure is defined to hold this information:
struct test_info_s { char * dns_server_v4; char * dns_server_v6; char * domain_name; char * hostname_v4; char * cname_v4; char * ip_addr_v4; char * hostname_v6; char * cname_v6; char * ip_addr_v6; char * hostname_v46; char * cname_v46; char * ip_addr_v46_v4; char * ip_addr_v46_v6; }; |
The test program may hold a number of such structures for different DNS server. The test will use each structure in turn to perform the tests. If IPv6 is not enabled in the eCos configuration, the entries which use IPv6 may be assigned to NULL.