changeset 424:ebee80bcca5a

fix build and tests on linux mips32
author Louis Opter <kalessin@kalessin.fr>
date Thu, 07 Jan 2016 00:59:07 +0100
parents 0a5896d64aaa
children 6477afd705d1
files network_discovery.patch
diffstat 1 files changed, 63 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/network_discovery.patch	Wed Jan 06 11:59:33 2016 +0100
+++ b/network_discovery.patch	Thu Jan 07 00:59:07 2016 +0100
@@ -1,5 +1,5 @@
 # HG changeset patch
-# Parent  1d70e191bfd598d0eaf23b87368acb704e764d57
+# Parent  415b476115e83c2f0d5ac5ec61920037f3c20f8a
 Properly broadcast LIFX discovery packets on all networks (closes GH-2)
 
 It does solve the issue but only is half the solution I'd like to have.
@@ -31,6 +31,52 @@
  SET(LIGHTSD_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
  
  MESSAGE(STATUS "lightsd version: ${LIGHTSD_VERSION}")
+diff --git a/core/lightsd.h b/core/lightsd.h
+--- a/core/lightsd.h
++++ b/core/lightsd.h
+@@ -41,7 +41,9 @@
+ #define LGTD_ABS(v) ((v) >= 0 ? (v) : (v) * -1)
+ #define LGTD_MIN(a, b) ((a) < (b) ? (a) : (b))
+ #define LGTD_MAX(a, b) ((a) > (b) ? (a) : (b))
++
+ #define LGTD_ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
++
+ #define LGTD_MSECS_TO_TIMEVAL(v) {  \
+     .tv_sec = (v) / 1000,           \
+     .tv_usec = ((v) % 1000) * 1000  \
+@@ -49,6 +51,7 @@
+ #define LGTD_NSECS_TO_USECS(v) ((v) / (unsigned int)1E6)
+ #define LGTD_NSECS_TO_SECS(v) ((v) / (unsigned int)1E9)
+ #define LGTD_SECS_TO_NSECS(v) ((v) * (unsigned int)1E9)
++
+ #define LGTD_TM_TO_ISOTIME(tm, sbuf, bufsz, usec) do {                          \
+     /* '2015-01-02T10:13:16.132222+00:00' */                                    \
+     if ((usec)) {                                                               \
+@@ -69,11 +72,24 @@
+         );                                                                      \
+     }                                                                           \
+ } while (0)
++
+ #define LGTD_SNPRINTF_APPEND(buf, i, bufsz, ...) do {       \
+     int n = snprintf(&(buf)[(i)], bufsz - i, __VA_ARGS__);  \
+     (i) = LGTD_MIN((i) + n, bufsz);                         \
+ } while (0)
+ 
++#if LGTD_BIG_ENDIAN_SYSTEM
++# define LGTD_STATIC_HTONS(s) (s)
++# define LGTD_STATIC_HTONL(l) (l)
++#else
++# define LGTD_STATIC_HTONS(s) ((((s) << 8) & 0xff00) | (((s) >> 8) & 0xff))
++# define LGTD_STATIC_HTONL(l) (                                 \
++    (((l) & 0xff000000) >> 24) | (((l) & 0x00ff0000) >> 8)      \
++    | (((l) & 0x0000ff00) << 8) | (((l) & 0x000000ff) << 24)    \
++)
++#endif
++
++
+ enum lgtd_verbosity {
+     LGTD_DEBUG = 0,
+     LGTD_INFO,
 diff --git a/lifx/broadcast.c b/lifx/broadcast.c
 --- a/lifx/broadcast.c
 +++ b/lifx/broadcast.c
@@ -258,7 +304,7 @@
 +    if (addrlen != -1 && addrlen != sizeof(*inaddr)) {
 +        lgtd_errx(
 +            1, "got invalid addrlen %u (expected %ju)",
-+            addrlen, sizeof(*inaddr)
++            addrlen, (uintmax_t)sizeof(*inaddr)
 +        );
 +    }
 +}
@@ -346,7 +392,7 @@
 +static const struct sockaddr_in MOCK_ADDR = {
 +    .sin_family = AF_INET,
 +    .sin_addr = { INADDR_BROADCAST },
-+    .sin_port = htons(LGTD_LIFX_PROTOCOL_PORT),
++    .sin_port = LGTD_STATIC_HTONS(LGTD_LIFX_PROTOCOL_PORT),
 +    .sin_zero = { 0 }
 +};
 +
@@ -377,14 +423,14 @@
 +    if (length != sizeof(MOCK_PKT)) {
 +        lgtd_errx(
 +            1, "got length=%ju (expected %ju)",
-+            (uintmax_t)length, sizeof(MOCK_PKT)
++            (uintmax_t)length, (uintmax_t)sizeof(MOCK_PKT)
 +        );
 +    }
 +
 +    if (strcmp((const char *)buffer, MOCK_PKT)) {
 +        lgtd_errx(
 +            1, "got buffer [%.*s] (expected [%s])",
-+            (int)length, buffer, MOCK_PKT
++            (int)length, (const char *)buffer, MOCK_PKT
 +        );
 +    }
 +
@@ -505,36 +551,36 @@
 +static const struct sockaddr_in LIFX_BROADCAST_ADDR = {
 +    .sin_family = AF_INET,
 +    .sin_addr = { INADDR_BROADCAST },
-+    .sin_port = htons(LGTD_LIFX_PROTOCOL_PORT),
++    .sin_port = LGTD_STATIC_HTONS(LGTD_LIFX_PROTOCOL_PORT),
 +    .sin_zero = { 0 }
 +};
 +
 +// /24
-+#define TEST_IPV4_NETMASK_ADDR_24 htonl(0xffffff00)
++#define TEST_IPV4_NETMASK_ADDR_24 LGTD_STATIC_HTONL(0xffffff00)
 +static struct sockaddr_in TEST_IPV4_NETMASK_SOCKADDR_24 = {
 +    .sin_family = AF_INET, .sin_addr = { TEST_IPV4_NETMASK_ADDR_24 }
 +};
 +
 +// /16
-+#define TEST_IPV4_NETMASK_ADDR_16 htonl(0xffff0000)
++#define TEST_IPV4_NETMASK_ADDR_16 LGTD_STATIC_HTONL(0xffff0000)
 +static struct sockaddr_in TEST_IPV4_NETMASK_SOCKADDR_16 = {
 +    .sin_family = AF_INET, .sin_addr = { TEST_IPV4_NETMASK_ADDR_16 }
 +};
 +
 +// 192.168.42.255
-+#define TEST_IPV4_BROADCAST_ADDR_CLASS_C htonl(0xc0a82aff)
++#define TEST_IPV4_BROADCAST_ADDR_CLASS_C LGTD_STATIC_HTONL(0xc0a82aff)
 +static struct sockaddr_in TEST_IPV4_BROADCAST_SOCKADDR_CLASS_C = {
 +    .sin_family = AF_INET, .sin_addr = { TEST_IPV4_BROADCAST_ADDR_CLASS_C }
 +};
 +
 +// 10.10.255.255
-+#define TEST_IPV4_BROADCAST_ADDR_CLASS_A htonl(0x0a0affff)
++#define TEST_IPV4_BROADCAST_ADDR_CLASS_A LGTD_STATIC_HTONL(0x0a0affff)
 +static struct sockaddr_in TEST_IPV4_BROADCAST_SOCKADDR_CLASS_A = {
 +    .sin_family = AF_INET, .sin_addr = { TEST_IPV4_BROADCAST_ADDR_CLASS_A }
 +};
 +
 +// 82.66.148.158
-+#define TEST_IPV4_UNICAST_ADDR_ROUTABLE htonl(0x5242949e)
++#define TEST_IPV4_UNICAST_ADDR_ROUTABLE LGTD_STATIC_HTONL(0x5242949e)
 +static struct sockaddr_in TEST_IPV4_UNICAST_SOCKADDR_ROUTABLE = {
 +    .sin_family = AF_INET, .sin_addr = { TEST_IPV4_UNICAST_ADDR_ROUTABLE }
 +};
@@ -694,7 +740,7 @@
 +    if (length != sizeof(struct lgtd_lifx_packet_header)) {
 +        lgtd_errx(
 +            1, "got buffer length=%ju (expected %ju)",
-+            (uintmax_t)length, sizeof(struct lgtd_lifx_packet_header)
++            (uintmax_t)length, (uintmax_t)sizeof(struct lgtd_lifx_packet_header)
 +        );
 +    }
 +
@@ -851,14 +897,15 @@
 new file mode 100644
 --- /dev/null
 +++ b/tests/lifx/broadcast/test_broadcast_write_callback_getifaddrs_fails.c
-@@ -0,0 +1,221 @@
+@@ -0,0 +1,222 @@
 +#include <sys/types.h>
 +#include <sys/socket.h>
 +#include <ifaddrs.h>
 +
 +int mock_getifaddrs(struct ifaddrs **);
 +void mock_freeifaddrs(struct ifaddrs *);
-+ssize_t mock_sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t);
++ssize_t mock_sendto(int, const void *, size_t, int,
++                    const struct sockaddr *, socklen_t);
 +
 +#define getifaddrs(ifap) mock_getifaddrs(ifap)
 +#define freeifaddrs(ifp) mock_freeifaddrs(ifp)
@@ -883,7 +930,7 @@
 +static const struct sockaddr_in LIFX_BROADCAST_ADDR = {
 +    .sin_family = AF_INET,
 +    .sin_addr = { INADDR_BROADCAST },
-+    .sin_port = htons(LGTD_LIFX_PROTOCOL_PORT),
++    .sin_port = LGTD_STATIC_HTONS(LGTD_LIFX_PROTOCOL_PORT),
 +    .sin_zero = { 0 }
 +};
 +
@@ -994,7 +1041,7 @@
 +    if (length != sizeof(struct lgtd_lifx_packet_header)) {
 +        lgtd_errx(
 +            1, "got buffer length=%ju (expected %ju)",
-+            (uintmax_t)length, sizeof(struct lgtd_lifx_packet_header)
++            (uintmax_t)length, (uintmax_t)sizeof(struct lgtd_lifx_packet_header)
 +        );
 +    }
 +