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 <sys/socket.h>
 	 #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 <sys/socket.h>
          #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);
