diff --git a/cbits/network-unix.c b/cbits/network-unix.c
--- a/cbits/network-unix.c
+++ b/cbits/network-unix.c
@@ -18,10 +18,12 @@
 #         define AF_PACKET AF_LINK
 #      endif
 #   endif
-#   ifdef __sun
+#   if defined(__sun) || defined(__GNU__)
 #      include <net/if_arp.h>
-#      include <unistd.h>
 #      include <stropts.h>
+#   endif
+#   ifdef __sun
+#      include <unistd.h>
 #      include <sys/sockio.h>
 #   endif
 #endif
@@ -33,7 +35,7 @@
 #include "network.h"
 #include "common.h"
 
-#if defined(__sun) || !defined(AF_PACKET)
+#if defined(__sun) || (!defined(AF_PACKET) && defined(SIOCGARP))
 int maccopy_arp(unsigned char *dst, struct sockaddr *addr)
 {
     // SOURCE DERIVED FROM: http://www.pauliesworld.org/project/getmac.c
@@ -130,14 +132,14 @@
         family = addr->sa_family;
         if (family == AF_INET) {
             ipv4copy(&n->ip_address, addr);
-#if defined(__sun) || !defined(AF_PACKET)
+#if defined(__sun) || (!defined(AF_PACKET) && defined(SIOCGARP))
             if ((ifa->ifa_flags & IFF_LOOPBACK) == 0) {
                 maccopy_arp(n->mac_address, addr);
             }
 #endif
         } else if (family == AF_INET6) {
             ipv6copy(&n->ip6_address, addr);
-#if defined(__sun) || !defined(AF_PACKET)
+#if defined(__sun) || (!defined(AF_PACKET) && defined(SIOCGARP))
             if ((ifa->ifa_flags & IFF_LOOPBACK) == 0) {
                 maccopy_arp(n->mac_address, addr);
             }
diff --git a/network-info.cabal b/network-info.cabal
--- a/network-info.cabal
+++ b/network-info.cabal
@@ -1,5 +1,5 @@
 name:           network-info
-version:        0.2.0.5
+version:        0.2.0.6
 synopsis:       Access the local computer's basic network configuration
 
 description:    This library provides simple read-only access to the
