The sources are based on the SCTP implementation of the FreeBSD kernel modified to work within the Mac OS X kernel infrastructure as a network kernel extension. This allows the dynamic loading and unloading of the module without rebooting the operating system.
The FreeBSD kernel stack and the SCTP NKE for Mac OS X supports:
When using Mac OS X 10.13, you can't load unsinged kernel extensions without disabling the System Integrity Protection. See Apple's documentation on how to disable it. I'm currently not providing a signed NKE, since I don't have the necessary certificate.
Currently there is no installer provided. Therefore the following manual steps are required. You can download a disk image containing all files at SCTP_NKE_HighSierra_02.dmg.
It is assumed that the comand line tools are installed. This can be done executing
xcode-select --install
Execute the following commands:
sudo cp -R /Volumes/SCTP_NKE_HighSierra_02/SCTPSupport.kext /Library/Extensions
sudo cp -R /Volumes/SCTP_NKE_HighSierra_02/SCTP.kext /Library/Extensions
The first extension is needed to export additional symbols from the kernel. The second extension contains the SCTP relevant code.
Execute the following commands:
sudo cp /Volumes/SCTP_NKE_HighSierra_02/socket.h /usr/include/sys/
sudo cp /Volumes/SCTP_NKE_HighSierra_02/sctp.h /usr/include/netinet/
sudo cp /Volumes/SCTP_NKE_HighSierra_02/sctp_uio.h /usr/include/netinet/
sudo cp /Volumes/SCTP_NKE_HighSierra_02/libsctp.dylib /usr/lib/
The first command changes an existing file by adding a definition for
MSG_NOTIFICATION
. The other commands add additional files.
Since the NKE's are not signed, you need the disable the System Integrity Protection as described above.
You can load the SCTP kext by executing in a shell
sudo kextload /Library/Extensions/SCTP.kext
You can unload the SCTP kext by executing in a shell
sudo kextunload /Library/Extensions/SCTP.kext