diff --git a/CMakeLists.txt b/CMakeLists.txt index c3ef2d784..5156f67ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -660,6 +660,8 @@ CHECK_C_SOURCE_COMPILES("#include \nvoid main(void) { while(1) ; } vo CHECK_C_SOURCE_COMPILES("#include \nvoid main(void) { while(1) ; } void xxexit(void){}" LWS_HAVE_INTTYPES_H) CHECK_C_SOURCE_COMPILES("#include \nvoid main(void) { while(1) ; } void xxexit(void){}" LWS_HAVE_SYS_RESOURCE_H) CHECK_C_SOURCE_COMPILES("#include \nvoid main(void) { while(1) ; } void xxexit(void){}" LWS_HAVE_LINUX_IPV6_H) +CHECK_C_SOURCE_COMPILES("#include \nvoid main(void) { while(1) ; } void xxexit(void){}" LWS_HAVE_NET_ETHERNET_H) + if (LWS_EXT_PTHREAD_INCLUDE_DIR) set(LWS_HAVE_PTHREAD_H 1) diff --git a/cmake/lws_config.h.in b/cmake/lws_config.h.in index f99aee0e4..dfd25d52e 100644 --- a/cmake/lws_config.h.in +++ b/cmake/lws_config.h.in @@ -165,6 +165,7 @@ #cmakedefine LWS_WITH_DLO #cmakedefine LWS_WITH_DRIVERS #cmakedefine LWS_WITH_ESP32 +#cmakedefine LWS_HAVE_NET_ETHERNET_H #cmakedefine LWS_HAVE_EVBACKEND_LINUXAIO #cmakedefine LWS_HAVE_EVBACKEND_IOURING #cmakedefine LWS_WITH_EXTERNAL_POLL diff --git a/cmake/lws_config_private.h.in b/cmake/lws_config_private.h.in index 2f7500a20..0f28dd40c 100644 --- a/cmake/lws_config_private.h.in +++ b/cmake/lws_config_private.h.in @@ -109,3 +109,4 @@ /* Defined if you have the header file. */ #cmakedefine LWS_HAVE_INTTYPES_H + diff --git a/include/libwebsockets.h b/include/libwebsockets.h index 05ede8de9..379afc820 100644 --- a/include/libwebsockets.h +++ b/include/libwebsockets.h @@ -41,6 +41,12 @@ extern "C" { #if defined(LWS_HAVE_SYS_TYPES_H) && !defined(LWS_PLAT_BAREMETAL) #include #endif +#if defined(LWS_HAVE_NET_ETHERNET_H) +#include +#endif +#if defined(_WIN32) && !defined(ETHER_ADDR_LEN) +#define ETHER_ADDR_LEN 6 +#endif #include #include @@ -288,6 +294,7 @@ typedef int suseconds_t; #define MBEDTLS_CONFIG_FILE #endif #endif + #if defined(LWS_WITH_TLS) #include #include diff --git a/lib/core-net/wol.c b/lib/core-net/wol.c index 20c939b80..ae0b03736 100644 --- a/lib/core-net/wol.c +++ b/lib/core-net/wol.c @@ -24,15 +24,11 @@ #include "private-lib-core.h" -#if defined(_WIN32) && !defined(IFHWADDRLEN) -#define IFHWADDRLEN 6 -#endif - int lws_wol(struct lws_context *ctx, const char *ip_or_NULL, uint8_t *mac_6_bytes) { int n, m, ofs = 0, fd, optval = 1, ret = 1; - uint8_t pkt[17 * IFHWADDRLEN]; + uint8_t pkt[17 * ETHER_ADDR_LEN]; struct sockaddr_in addr; fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); @@ -51,10 +47,10 @@ lws_wol(struct lws_context *ctx, const char *ip_or_NULL, uint8_t *mac_6_bytes) * Lay out the magic packet */ - for (n = 0; n < IFHWADDRLEN; n++) + for (n = 0; n < ETHER_ADDR_LEN; n++) pkt[ofs++] = 0xff; for (m = 0; m < 16; m++) - for (n = 0; n < IFHWADDRLEN; n++) + for (n = 0; n < ETHER_ADDR_LEN; n++) pkt[ofs++] = mac_6_bytes[n]; memset(&addr, 0, sizeof(addr)); diff --git a/minimal-examples-lowlevel/raw/minimal-raw-wol/minimal-raw-wol.c b/minimal-examples-lowlevel/raw/minimal-raw-wol/minimal-raw-wol.c index a9b813600..8a9eca670 100644 --- a/minimal-examples-lowlevel/raw/minimal-raw-wol/minimal-raw-wol.c +++ b/minimal-examples-lowlevel/raw/minimal-raw-wol/minimal-raw-wol.c @@ -14,11 +14,11 @@ int main(int argc, const char **argv) { - struct lws_context_creation_info info; - struct lws_context *ctx; - const char *p, *ip = NULL; - uint8_t mac[IFHWADDRLEN]; - int ret = 1; + struct lws_context_creation_info info; + struct lws_context *ctx; + const char *p, *ip = NULL; + uint8_t mac[ETHER_ADDR_LEN]; + int ret = 1; memset(&info, 0, sizeof info); lws_cmdline_option_handle_builtin(argc, argv, &info);