summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOle André Vadla Ravnås <oleavr@gmail.com>2022-03-29 02:15:11 +0200
committerGitHub <noreply@github.com>2022-03-29 02:15:11 +0200
commit74fb47a5d40df686d30cf87b895a48e6e1dcbdc4 (patch)
tree7b75287b759ca817000f50821ab58afb22ab962a
parentb29c220387d78a48d78186628d4653c89da5dd30 (diff)
Add support for QNX (#654)
-rw-r--r--meson.build6
-rwxr-xr-xusrsctplib/netinet/sctp_os_userspace.h4
-rwxr-xr-xusrsctplib/netinet/sctp_userspace.c2
-rwxr-xr-xusrsctplib/user_environment.c10
4 files changed, 17 insertions, 5 deletions
diff --git a/meson.build b/meson.build
index a1d68c1..51a4a43 100644
--- a/meson.build
+++ b/meson.build
@@ -77,6 +77,10 @@ elif system in ['darwin', 'ios']
'-Wno-address-of-packed-member',
'-Wno-deprecated-declarations',
]), language: 'c')
+elif system == 'qnx'
+ add_project_arguments([
+ '-D_QNX_SOURCE',
+ ], language: 'c')
elif system == 'windows'
dependencies += compiler.find_library('ws2_32', required: true)
dependencies += compiler.find_library('iphlpapi', required: true)
@@ -91,7 +95,7 @@ else
endif
# Feature: sys/queue
-if compiler.has_header('sys/queue.h')
+if system != 'qnx' and compiler.has_header('sys/queue.h')
add_project_arguments('-DHAVE_SYS_QUEUE_H', language: 'c')
endif
diff --git a/usrsctplib/netinet/sctp_os_userspace.h b/usrsctplib/netinet/sctp_os_userspace.h
index b0d72bd..fbd3b8a 100755
--- a/usrsctplib/netinet/sctp_os_userspace.h
+++ b/usrsctplib/netinet/sctp_os_userspace.h
@@ -1074,6 +1074,8 @@ sctp_get_mbuf_for_msg(unsigned int space_needed, int want_header, int how, int a
#define CMSG_ALIGN(n) _ALIGN(n)
#elif defined(__NetBSD__)
#define CMSG_ALIGN(n) (((n) + __ALIGNBYTES) & ~__ALIGNBYTES)
+#elif defined(__QNX__)
+#define CMSG_ALIGN(n) __CMSG_ALIGN(n)
#elif defined(__APPLE__)
#if !defined(__DARWIN_ALIGNBYTES)
#define __DARWIN_ALIGNBYTES (sizeof(__darwin_size_t) - 1)
@@ -1137,7 +1139,7 @@ sctp_get_mbuf_for_msg(unsigned int space_needed, int want_header, int how, int a
#define SCTP_IS_LISTENING(inp) ((inp->sctp_flags & SCTP_PCB_FLAGS_ACCEPTING) != 0)
-#if defined(__APPLE__) || defined(__DragonFly__) || defined(__linux__) || defined(__native_client__) || defined(__NetBSD__) || defined(_WIN32) || defined(__Fuchsia__) || defined(__EMSCRIPTEN__)
+#if defined(__APPLE__) || defined(__DragonFly__) || defined(__linux__) || defined(__native_client__) || defined(__NetBSD__) || defined(__QNX__) || defined(_WIN32) || defined(__Fuchsia__) || defined(__EMSCRIPTEN__)
int
timingsafe_bcmp(const void *, const void *, size_t);
#endif
diff --git a/usrsctplib/netinet/sctp_userspace.c b/usrsctplib/netinet/sctp_userspace.c
index 3106062..7188890 100755
--- a/usrsctplib/netinet/sctp_userspace.c
+++ b/usrsctplib/netinet/sctp_userspace.c
@@ -137,7 +137,7 @@ sctp_userspace_get_mtu_from_ifn(uint32_t if_index)
}
#endif
-#if defined(__APPLE__) || defined(__DragonFly__) || defined(__linux__) || defined(__native_client__) || defined(__NetBSD__) || defined(_WIN32) || defined(__Fuchsia__) || defined(__EMSCRIPTEN__)
+#if defined(__APPLE__) || defined(__DragonFly__) || defined(__linux__) || defined(__native_client__) || defined(__NetBSD__) || defined(__QNX__) || defined(_WIN32) || defined(__Fuchsia__) || defined(__EMSCRIPTEN__)
int
timingsafe_bcmp(const void *b1, const void *b2, size_t n)
{
diff --git a/usrsctplib/user_environment.c b/usrsctplib/user_environment.c
index 1887718..fc3076d 100755
--- a/usrsctplib/user_environment.c
+++ b/usrsctplib/user_environment.c
@@ -172,15 +172,21 @@ finish_random(void)
{
return;
}
-#elif (defined(__ANDROID__) && (__ANDROID_API__ < 28)) || defined(__EMSCRIPTEN__)
+#elif (defined(__ANDROID__) && (__ANDROID_API__ < 28)) || defined(__QNX__) || defined(__EMSCRIPTEN__)
#include <fcntl.h>
+#ifdef __QNX__
+#define SCTP_RANDOM_DEVICE "/dev/random"
+#else
+#define SCTP_RANDOM_DEVICE "/dev/urandom"
+#endif
+
static int fd = -1;
void
init_random(void)
{
- fd = open("/dev/urandom", O_RDONLY);
+ fd = open(SCTP_RANDOM_DEVICE, O_RDONLY);
return;
}