#include <string.h>
#include <stdlib.h>
+#include <stdio.h>
#include "internal.h"
#include "names.h"
#ifdef PCI_USE_DNS
+/*
+ * Our definition of BYTE_ORDER confuses arpa/nameser_compat.h on
+ * Solaris so we must undef it before including arpa/nameser.h.
+ */
+#ifdef PCI_OS_SUNOS
+#undef BYTE_ORDER
+#endif
+
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>
+#include <netdb.h>
/*
* Unfortunately, there are no portable functions for DNS RR parsing,
struct dns_state {
u16 counts[DNS_NUM_SECTIONS];
- u8 *sections[DNS_NUM_SECTIONS+1];
- u8 *sec_ptr, *sec_end;
+ byte *sections[DNS_NUM_SECTIONS+1];
+ byte *sec_ptr, *sec_end;
/* Result of dns_parse_rr(): */
u16 rr_type;
u16 rr_class;
u32 rr_ttl;
u16 rr_len;
- u8 *rr_data;
+ byte *rr_data;
};
-static u8 *
-dns_skip_name(u8 *p, u8 *end)
+static byte *
+dns_skip_name(byte *p, byte *end)
{
while (p < end)
{
}
static int
-dns_parse_packet(struct dns_state *s, u8 *p, unsigned int plen)
+dns_parse_packet(struct dns_state *s, byte *p, unsigned int plen)
{
- u8 *end = p + plen;
- unsigned int i, j, x, len;
+ byte *end = p + plen;
+ unsigned int i, j, len;
+ unsigned int UNUSED x;
#if 0
/* Dump the packet */
default:
return NULL;
}
- sprintf(dnsname, "%s.%s", name, domain);
+ sprintf(dnsname, "%.100s.%.100s", name, domain);
a->debug("Resolving %s\n", dnsname);
if (!resolver_inited)
res = res_query(dnsname, ns_c_in, ns_t_txt, answer, sizeof(answer));
if (res < 0)
{
- a->debug("\tfailed, h_errno=%d\n", _res.res_h_errno);
+ a->debug("\tfailed, h_errno=%d\n", h_errno);
return NULL;
}
if (dns_parse_packet(&ds, answer, res) < 0)