diff -Naur otp_src_R11B-5/erts/configure.in otp_src_R11B-5-freebsd_sctp/erts/configure.in --- otp_src_R11B-5/erts/configure.in 2007-06-11 14:53:45.000000000 +0200 +++ otp_src_R11B-5-freebsd_sctp/erts/configure.in 2007-07-06 17:21:26.000000000 +0200 @@ -1013,6 +1013,7 @@ dnl Check for kernel SCTP support AC_SUBST(WITH_SCTP) +AC_SUBST(WITH_LIBSCTP) if test "x$enable_sctp" != "xno" ; then AC_CHECK_HEADER(netinet/sctp.h, [WITH_SCTP=1, @@ -1023,6 +1024,7 @@ #include #endif ]) + AC_CHECK_LIB(sctp, sctp_connectx) AC_CHECK_DECLS([SCTP_UNORDERED, SCTP_ADDR_OVER, SCTP_ABORT, SCTP_EOF, SCTP_SENDALL], [], [], [#if HAVE_SYS_SOCKET_H @@ -1034,7 +1036,8 @@ struct sctp_paddrparams.spp_sackdelay, struct sctp_paddrparams.spp_flags, struct sctp_remote_error.sre_data, - struct sctp_send_failed.ssh_data], [], [], + struct sctp_send_failed.ssh_data, + struct sctp_event_subscribe.sctp_adaptation_layer_event], [], [], [#if HAVE_SYS_SOCKET_H #include #endif @@ -2428,7 +2431,7 @@ DED_LD_FLAG_RUNTIME_LIBRARY_PATH= STATIC_CFLAGS="-mdynamic-no-pic" ;; - linux*) + linux*|freebsd*) DED_LD="$CC" DED_LDFLAGS="-shared" ;; diff -Naur otp_src_R11B-5/erts/emulator/Makefile.in otp_src_R11B-5-freebsd_sctp/erts/emulator/Makefile.in --- otp_src_R11B-5/erts/emulator/Makefile.in 2007-03-27 15:26:54.000000000 +0200 +++ otp_src_R11B-5-freebsd_sctp/erts/emulator/Makefile.in 2007-07-06 17:21:28.000000000 +0200 @@ -263,8 +263,8 @@ LIBS += -lperfctr endif endif -WITH_SCTP=@WITH_SCTP@ -ifdef WITH_SCTP +WITH_LIBSCTP=@WITH_LIBSCTP@ +ifdef WITH_LIBSCTP LIBS += -lsctp endif diff -Naur otp_src_R11B-5/erts/emulator/drivers/common/inet_drv.c otp_src_R11B-5-freebsd_sctp/erts/emulator/drivers/common/inet_drv.c --- otp_src_R11B-5/erts/emulator/drivers/common/inet_drv.c 2007-06-11 14:53:49.000000000 +0200 +++ otp_src_R11B-5-freebsd_sctp/erts/emulator/drivers/common/inet_drv.c 2007-07-06 17:21:32.000000000 +0200 @@ -5684,7 +5684,11 @@ arg.es.sctp_peer_error_event = get_int8(curr); curr++; arg.es.sctp_shutdown_event = get_int8(curr); curr++; arg.es.sctp_partial_delivery_event = get_int8(curr); curr++; +# ifdef HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE_SCTP_ADAPTATION_LAYER_EVENT + arg.es.sctp_adaptation_layer_event = get_int8(curr); curr++; +# else arg.es.sctp_adaption_layer_event = get_int8(curr); curr++; +# endif proto = IPPROTO_SCTP; type = SCTP_EVENTS; @@ -6580,7 +6584,11 @@ i = LOAD_BOOL (spec, i, evs.sctp_peer_error_event); i = LOAD_BOOL (spec, i, evs.sctp_shutdown_event); i = LOAD_BOOL (spec, i, evs.sctp_partial_delivery_event); +# ifdef HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE_SCTP_ADAPTATION_LAYER_EVENT + i = LOAD_BOOL (spec, i, evs.sctp_adaptation_layer_event); +# else i = LOAD_BOOL (spec, i, evs.sctp_adaption_layer_event); +# endif /* NB: sctp_authentication_event is not yet supported in Linux */ i = LOAD_TUPLE (spec, i, 9); i = LOAD_TUPLE (spec, i, 2);