--- /dev/null
+--- a/cmake/checks.cmake
++++ b/cmake/checks.cmake
+@@ -54,9 +54,13 @@ if(NOT DARWIN)
+ endif(NOT DARWIN)
+
+
++set(CMAKE_EXTRA_INCLUDE_FILES "linux/if_ether.h")
++check_type_size("struct ethhdr" SIZEOF_ETHHDR)
++string(COMPARE NOTEQUAL "${SIZEOF_ETHHDR}" "" HAVE_LINUX_ETHHDR)
++
+ set(CMAKE_EXTRA_INCLUDE_FILES "netinet/if_ether.h")
+ check_type_size("struct ethhdr" SIZEOF_ETHHDR)
+-string(COMPARE NOTEQUAL "${SIZEOF_ETHHDR}" "" HAVE_ETHHDR)
++string(COMPARE NOTEQUAL "${SIZEOF_ETHHDR}" "" HAVE_NETINET_ETHHDR)
+
+
+ set(CMAKE_REQUIRED_INCLUDES "sys/types.h")
+--- a/src/compat.h
++++ b/src/compat.h
+@@ -45,7 +45,12 @@
+ #include <net/if.h>
+ #include <net/if_arp.h>
+ #include <netinet/in.h>
++
++#if defined(HAVE_LINUX_ETHHDR)
++#include <linux/if_ether.h>
++#elif defined(HAVE_NETINET_ETHHDR)
+ #include <netinet/if_ether.h>
++#endif
+
+ #ifndef ETH_ALEN
+ /** The length of a MAC address */
+@@ -55,9 +60,8 @@
+ #ifndef ETH_HLEN
+ /** The length of the standard ethernet header */
+ #define ETH_HLEN 14
+-#endif
+
+-#ifndef HAVE_ETHHDR
++#if !defined(HAVE_LINUX_ETHHDR) && !defined(HAVE_NETINET_ETHHDR)
+ /** An ethernet header */
+ struct ethhdr {
+ uint8_t h_dest[ETH_ALEN]; /**< The destination MAC address field */
+@@ -65,6 +69,7 @@ struct ethhdr {
+ uint16_t h_proto; /**< The EtherType/length field */
+ } __attribute__((packed));
+ #endif
++#endif
+
+ #if defined(USE_FREEBIND) && !defined(IP_FREEBIND)
+ /** Compatiblity define for systems supporting, but not defining IP_FREEBIND */
+--- a/src/fastd_config.h.in
++++ b/src/fastd_config.h.in
+@@ -35,8 +35,11 @@
+ /** Defined if the platform supports the AI_ADDRCONFIG flag to getaddrinfo() */
+ #cmakedefine HAVE_AI_ADDRCONFIG
+
+-/** Defined if the platform defines the \e ethhdr struct */
+-#cmakedefine HAVE_ETHHDR
++/** Defined if the platform defines the \e ethhdr struct through linux/if_ether.h */
++#cmakedefine HAVE_LINUX_ETHHDR
++
++/** Defined if the platform defines the \e ethhdr struct through netinet/if_ether.h */
++#cmakedefine HAVE_NETINET_ETHHDR
+
+ /** Defined if the platform defines get_current_dir_name() */
+ #cmakedefine HAVE_GET_CURRENT_DIR_NAME