- sprintf(query,"%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.%0x.ip6.int",
- ip->s6_addr[15] & 0x0f,
- (ip->s6_addr[15] & 0xf0) >> 4,
- ip->s6_addr[14] & 0x0f,
- (ip->s6_addr[14] & 0xf0) >> 4,
- ip->s6_addr[13] & 0x0f,
- (ip->s6_addr[13] & 0xf0) >> 4,
- ip->s6_addr[12] & 0x0f,
- (ip->s6_addr[12] & 0xf0) >> 4,
- ip->s6_addr[11] & 0x0f,
- (ip->s6_addr[11] & 0xf0) >> 4,
- ip->s6_addr[10] & 0x0f,
- (ip->s6_addr[10] & 0xf0) >> 4,
- ip->s6_addr[9] & 0x0f,
- (ip->s6_addr[9] & 0xf0) >> 4,
- ip->s6_addr[8] & 0x0f,
- (ip->s6_addr[8] & 0xf0) >> 4,
- ip->s6_addr[7] & 0x0f,
- (ip->s6_addr[7] & 0xf0) >> 4,
- ip->s6_addr[6] & 0x0f,
- (ip->s6_addr[6] & 0xf0) >> 4,
- ip->s6_addr[5] & 0x0f,
- (ip->s6_addr[5] & 0xf0) >> 4,
- ip->s6_addr[4] & 0x0f,
- (ip->s6_addr[4] & 0xf0) >> 4,
- ip->s6_addr[3] & 0x0f,
- (ip->s6_addr[3] & 0xf0) >> 4,
- ip->s6_addr[2] & 0x0f,
- (ip->s6_addr[2] & 0xf0) >> 4,
- ip->s6_addr[1] & 0x0f,
- (ip->s6_addr[1] & 0xf0) >> 4,
- ip->s6_addr[0] & 0x0f,
- (ip->s6_addr[0] & 0xf0) >> 4
- );
-}
-
-/* Return the next id which is ready, and the result attached to it */
-DNSResult DNS::GetResult()
+#ifdef SUPPORT_IP6LINKS
+ const char* hex = "0123456789abcdef";
+ for (int index = 31; index >= 0; index--) /* for() loop steps twice per byte */
+ {
+ if (index % 2)
+ /* low nibble */
+ *query++ = hex[ip->s6_addr[index / 2] & 0x0F];
+ else
+ /* high nibble */
+ *query++ = hex[(ip->s6_addr[index / 2] & 0xF0) >> 4];
+ *query++ = '.'; /* Seperator */
+ }
+ strcpy(query,"ip6.arpa"); /* Suffix the string */
+#else
+ *query = 0;
+#endif
+}
+
+/** Return the next id which is ready, and the result attached to it */
+DNSResult DNS::GetResult(int resultnum)