Define ETHERTYPE_IPV6 ourselves.
[darkstat] / dns.c
diff --git a/dns.c b/dns.c
index f8d7296..c89dc1b 100644 (file)
--- a/dns.c
+++ b/dns.c
 #include <string.h>
 #include <unistd.h>
 
+#ifdef __NetBSD__
+# define gethostbyaddr(addr, len, type) \
+         gethostbyaddr((const char *)(addr), len, type)
+#endif
+
 static void dns_main(void) _noreturn_; /* the child process runs this */
 
 #define CHILD 0 /* child process uses this socket */
@@ -191,16 +196,15 @@ dns_get_result(struct addr *ipaddr, char **name)
       /* Identify common special cases.  */
       const char *type = "none";
 
-      switch (reply.addr.family) {
-      case IPv6:
+      if (reply.addr.family == IPv6) {
          if (IN6_IS_ADDR_LINKLOCAL(&reply.addr.ip.v6))
             type = "link-local";
          else if (IN6_IS_ADDR_SITELOCAL(&reply.addr.ip.v6))
             type = "site-local";
          else if (IN6_IS_ADDR_MULTICAST(&reply.addr.ip.v6))
             type = "multicast";
-         break;
-      case IPv4:
+      } else {
+         assert(reply.addr.family == IPv4);
          if (IN_MULTICAST(htonl(reply.addr.ip.v4)))
             type = "multicast";
       }