aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Green <andy@warmcat.com>2023-12-07 05:27:28 +0000
committerAndy Green <andy@warmcat.com>2023-12-07 05:31:25 +0000
commitdab8e1c4f825d3ef8966dba78d0143721df72af4 (patch)
tree9a915f538828738fabbe52c13700db22eb428301
parentb391e1141abdb1f46621a67a8f00f0884bf6595a (diff)
downloadlibwebsockets-dab8e1c4f825d3ef8966dba78d0143721df72af4.tar.gz
mac length: switch to ETHER_ADDR_LEN
Long story, there's also minimal example to take care of. This change should take care of anything with ETHER_ADDR_LEN in net/ethernet.h plus windows, for both the lib and example.
-rw-r--r--CMakeLists.txt2
-rw-r--r--cmake/lws_config.h.in1
-rw-r--r--cmake/lws_config_private.h.in1
-rw-r--r--include/libwebsockets.h7
-rw-r--r--lib/core-net/wol.c10
-rw-r--r--minimal-examples-lowlevel/raw/minimal-raw-wol/minimal-raw-wol.c10
6 files changed, 19 insertions, 12 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c3ef2d78..5156f67f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -660,6 +660,8 @@ CHECK_C_SOURCE_COMPILES("#include <pthread.h>\nvoid main(void) { while(1) ; } vo
CHECK_C_SOURCE_COMPILES("#include <inttypes.h>\nvoid main(void) { while(1) ; } void xxexit(void){}" LWS_HAVE_INTTYPES_H)
CHECK_C_SOURCE_COMPILES("#include <sys/resource.h>\nvoid main(void) { while(1) ; } void xxexit(void){}" LWS_HAVE_SYS_RESOURCE_H)
CHECK_C_SOURCE_COMPILES("#include <linux/ipv6.h>\nvoid main(void) { while(1) ; } void xxexit(void){}" LWS_HAVE_LINUX_IPV6_H)
+CHECK_C_SOURCE_COMPILES("#include <net/ethernet.h>\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 f99aee0e..dfd25d52 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 2f7500a2..0f28dd40 100644
--- a/cmake/lws_config_private.h.in
+++ b/cmake/lws_config_private.h.in
@@ -109,3 +109,4 @@
/* Defined if you have the <inttypes.h> header file. */
#cmakedefine LWS_HAVE_INTTYPES_H
+
diff --git a/include/libwebsockets.h b/include/libwebsockets.h
index 05ede8de..379afc82 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 <sys/types.h>
#endif
+#if defined(LWS_HAVE_NET_ETHERNET_H)
+#include <net/ethernet.h>
+#endif
+#if defined(_WIN32) && !defined(ETHER_ADDR_LEN)
+#define ETHER_ADDR_LEN 6
+#endif
#include <stddef.h>
#include <string.h>
@@ -288,6 +294,7 @@ typedef int suseconds_t;
#define MBEDTLS_CONFIG_FILE <mbedtls/esp_config.h>
#endif
#endif
+
#if defined(LWS_WITH_TLS)
#include <mbedtls/ssl.h>
#include <mbedtls/entropy.h>
diff --git a/lib/core-net/wol.c b/lib/core-net/wol.c
index 20c939b8..ae0b0373 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 a9b81360..8a9eca67 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);