@@ -8018,6 +8018,10 @@ ERL_NIF_TERM esock_setopt_sctp_events(ErlNifEnv* env,
80188018{
80198019 struct sctp_event_subscribe events ;
80208020 BOOLEAN_T error ;
8021+ #if defined(__linux__ )
8022+ int last_opt = offsetof(struct sctp_event_subscribe ,
8023+ sctp_adaptation_layer_event ) + 1 ;
8024+ #endif
80218025
80228026 SSDBG ( descP ,
80238027 ("SOCKET" , "esock_setopt_sctp_events {%d} -> entry with"
@@ -8055,20 +8059,32 @@ ERL_NIF_TERM esock_setopt_sctp_events(ErlNifEnv* env,
80558059#if defined(HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE_SCTP_AUTHENTICATION_EVENT )
80568060 events .sctp_authentication_event =
80578061 esock_setopt_sctp_event (env , eVal , atom_authentication , & error );
8062+ #if defined(__linux__ )
8063+ last_opt = offsetof(struct sctp_event_subscribe ,
8064+ sctp_authentication_event ) + 1 ;
8065+ #endif
80588066#endif
80598067
80608068#if defined(HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE_SCTP_SENDER_DRY_EVENT )
80618069 events .sctp_sender_dry_event =
80628070 esock_setopt_sctp_event (env , eVal , atom_sender_dry , & error );
8071+ #if defined(__linux__ )
8072+ last_opt = offsetof(struct sctp_event_subscribe , sctp_sender_dry_event ) + 1 ;
8073+ #endif
80638074#endif
80648075
80658076 if (error ) {
80668077 goto invalid ;
80678078 } else {
80688079 ERL_NIF_TERM result ;
8080+ #if defined(__linux__ )
8081+ int arg_sz = last_opt ;
8082+ #else
8083+ int arg_sz = sizeof (events );
8084+ #endif
80698085
80708086 result = esock_setopt_level_opt (env , descP , level , opt ,
8071- & events , sizeof ( events ) );
8087+ & events , arg_sz );
80728088 SSDBG ( descP ,
80738089 ("SOCKET" ,
80748090 "esock_setopt_sctp_events {%d} -> set events -> %T\r\n" ,
0 commit comments