aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/nifs/common
diff options
context:
space:
mode:
Diffstat (limited to 'erts/emulator/nifs/common')
-rw-r--r--erts/emulator/nifs/common/socket_nif.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/erts/emulator/nifs/common/socket_nif.c b/erts/emulator/nifs/common/socket_nif.c
index ee1aa61c35..3da895e644 100644
--- a/erts/emulator/nifs/common/socket_nif.c
+++ b/erts/emulator/nifs/common/socket_nif.c
@@ -9226,7 +9226,10 @@ ERL_NIF_TERM nsetopt_lvl_sctp_events(ErlNifEnv* env,
ERL_NIF_TERM result;
ERL_NIF_TERM eDataIn, eAssoc, eAddr, eSndFailure;
ERL_NIF_TERM ePeerError, eShutdown, ePartialDelivery;
- ERL_NIF_TERM eAdaptLayer, eAuth, eSndDry;
+ ERL_NIF_TERM eAdaptLayer, eAuth;
+#if defined(HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE_SCTP_SENDER_DRY_EVENT)
+ ERL_NIF_TERM eSndDry;
+#endif
struct sctp_event_subscribe events;
int res;
size_t sz;
@@ -9271,11 +9274,15 @@ ERL_NIF_TERM nsetopt_lvl_sctp_events(ErlNifEnv* env,
if (!GET_MAP_VAL(env, eVal, atom_adaptation_layer, &eAdaptLayer))
return esock_make_error(env, esock_atom_einval);
+#if defined(HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE_SCTP_AUTHENTICATION_EVENT)
if (!GET_MAP_VAL(env, eVal, atom_authentication, &eAuth))
return esock_make_error(env, esock_atom_einval);
+#endif
+#if defined(HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE_SCTP_SENDER_DRY_EVENT)
if (!GET_MAP_VAL(env, eVal, atom_sender_dry, &eSndDry))
return esock_make_error(env, esock_atom_einval);
+#endif
SSDBG( descP,
("SOCKET", "nsetopt_lvl_sctp_events -> decode attributes\r\n") );
@@ -9288,8 +9295,12 @@ ERL_NIF_TERM nsetopt_lvl_sctp_events(ErlNifEnv* env,
events.sctp_shutdown_event = esock_decode_bool(eShutdown);
events.sctp_partial_delivery_event = esock_decode_bool(ePartialDelivery);
events.sctp_adaptation_layer_event = esock_decode_bool(eAdaptLayer);
+#if defined(HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE_SCTP_AUTHENTICATION_EVENT)
events.sctp_authentication_event = esock_decode_bool(eAuth);
+#endif
+#if defined(HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE_SCTP_SENDER_DRY_EVENT)
events.sctp_sender_dry_event = esock_decode_bool(eSndDry);
+#endif
SSDBG( descP,
("SOCKET", "nsetopt_lvl_sctp_events -> set events option\r\n") );
@@ -15412,8 +15423,10 @@ char* decode_ip_pmtudisc(ErlNifEnv* env, ERL_NIF_TERM eVal, int* val)
*val = IP_PMTUDISC_DONT;
} else if (COMPARE(eVal, atom_do) == 0) {
*val = IP_PMTUDISC_DO;
+#if defined(IP_PMTUDISC_PROBE)
} else if (COMPARE(eVal, atom_probe) == 0) {
*val = IP_PMTUDISC_PROBE;
+#endif
} else {
*val = -1;
res = ESOCK_STR_EINVAL;
@@ -15463,8 +15476,10 @@ char* decode_ipv6_pmtudisc(ErlNifEnv* env, ERL_NIF_TERM eVal, int* val)
*val = IPV6_PMTUDISC_DONT;
} else if (COMPARE(eVal, atom_do) == 0) {
*val = IPV6_PMTUDISC_DO;
+#if defined(IPV6_PMTUDISC_PROBE)
} else if (COMPARE(eVal, atom_probe) == 0) {
*val = IPV6_PMTUDISC_PROBE;
+#endif
} else {
*val = -1;
res = ESOCK_STR_EINVAL;
@@ -15517,9 +15532,11 @@ void encode_ip_pmtudisc(ErlNifEnv* env, int val, ERL_NIF_TERM* eVal)
*eVal = atom_do;
break;
+#if defined(IP_PMTUDISC_PROBE)
case IP_PMTUDISC_PROBE:
*eVal = atom_probe;
break;
+#endif
default:
*eVal = MKI(env, val);
@@ -15559,9 +15576,11 @@ void encode_ipv6_pmtudisc(ErlNifEnv* env, int val, ERL_NIF_TERM* eVal)
*eVal = atom_do;
break;
+#if defined(IPV6_PMTUDISC_PROBE)
case IPV6_PMTUDISC_PROBE:
*eVal = atom_probe;
break;
+#endif
default:
*eVal = MKI(env, val);