Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:19
erlang
2551-erts-Tweaked-the-config-and-usage-of-SCTP-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 2551-erts-Tweaked-the-config-and-usage-of-SCTP-for-NetBSD.patch of Package erlang
From c6a283d573a8a22001f0d3b0ed8b19ed8ce3b276 Mon Sep 17 00:00:00 2001 From: Micael Karlberg <bmk@erlang.org> Date: Tue, 3 Mar 2020 15:28:18 +0100 Subject: [PATCH 1/8] [erts] Tweaked the config and usage of SCTP for NetBSD On NetBSD the type sctp_assoc_value does not exist. Its used normally when setting, for instance, the option SCTP_DELAYED_ACK_TIME. This option *does* exist on NetBSD, but it can only be used to set the "default value" (which on Linux is done by setting assoc_id (in assoc_value) to 0). The way to "properly" handle this on NetBSD would be to accept this option (for inet:[setopts/getopts]), but verify that the assoc id is zero (0). For now we simply test for the type, and if it does not exist, we do not allow set/get of this option. --- erts/configure.in | 6 ++++++ erts/emulator/drivers/common/inet_drv.c | 16 +++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/erts/configure.in b/erts/configure.in index 46c90a152a..1f6a95f794 100644 --- a/erts/configure.in +++ b/erts/configure.in @@ -1736,6 +1736,12 @@ if test x"$ac_cv_header_netinet_sctp_h" = x"yes"; then AS_IF([test "x$enable_sctp" = "xlib"], AC_CHECK_LIB(sctp, sctp_bindx)) AC_CHECK_FUNCS([sctp_bindx sctp_peeloff sctp_getladdrs sctp_freeladdrs sctp_getpaddrs sctp_freepaddrs]) + AC_CHECK_MEMBERS([struct sctp_accoc_value.assoc_id], [], [], + [#if HAVE_SYS_SOCKET_H + #include <sys/socket.h> + #endif + #include <netinet/sctp.h> + ]) AC_CHECK_DECLS([SCTP_UNORDERED, SCTP_ADDR_OVER, SCTP_ABORT, SCTP_EOF, SCTP_SENDALL, SCTP_ADDR_CONFIRMED, SCTP_DELAYED_ACK_TIME, diff --git a/erts/emulator/drivers/common/inet_drv.c b/erts/emulator/drivers/common/inet_drv.c index c3d2df6008..868a001a36 100644 --- a/erts/emulator/drivers/common/inet_drv.c +++ b/erts/emulator/drivers/common/inet_drv.c @@ -6954,9 +6954,9 @@ static int sctp_set_opts(inet_descriptor* desc, char* ptr, int len) struct sctp_paddrparams pap; struct sctp_sndrcvinfo sri; struct sctp_event_subscribe es; -# ifdef SCTP_DELAYED_ACK_TIME +#if defined(HAVE_DECL_SCTP_DELAYED_ACK_TIME) && defined(SCTP_ASSOC_VALUE_ASSOC_ID) struct sctp_assoc_value av; /* Not in SOLARIS10 */ -# endif +#endif # ifdef SO_BINDTODEVICE char ifname[IFNAMSIZ]; # endif @@ -7475,8 +7475,9 @@ static int sctp_set_opts(inet_descriptor* desc, char* ptr, int len) arg_sz = sizeof ( arg.es); break; } - /* The following is not available on Solaris 10: */ -# ifdef SCTP_DELAYED_ACK_TIME + /* The following is not available on + * Solaris 10 or NetBSD or ... */ +#if defined(HAVE_DECL_SCTP_DELAYED_ACK_TIME) && defined(SCTP_ASSOC_VALUE_ASSOC_ID) case SCTP_OPT_DELAYED_ACK_TIME: { CHKLEN(curr, ASSOC_ID_LEN + 4); @@ -7489,7 +7490,7 @@ static int sctp_set_opts(inet_descriptor* desc, char* ptr, int len) arg_sz = sizeof ( arg.av); break; } -# endif +#endif default: /* XXX: No more supported SCTP options. In particular, authentica- tion options (SCTP_AUTH_CHUNK, SCTP_AUTH_KEY, SCTP_PEER_AUTH_ @@ -8790,8 +8791,9 @@ static ErlDrvSSizeT sctp_fill_opts(inet_descriptor* desc, i = LOAD_TUPLE (spec, i, 2); break; } - /* The following option is not available in Solaris 10: */ -# if HAVE_DECL_SCTP_DELAYED_ACK_TIME + /* The following option is not available on: + * Solaris 10 or NetBSD or ... */ +#if defined(HAVE_DECL_SCTP_DELAYED_ACK_TIME) && defined(SCTP_ASSOC_VALUE_ASSOC_ID) case SCTP_OPT_DELAYED_ACK_TIME: { struct sctp_assoc_value av; -- 2.16.4
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor