Я хочу написать приложение, которое использует OpenSSL, чтобы воспользоваться его поддержкой DTLS над SCTP. Я использую Ubuntu 13.10.
Я скачал и успешно скомпилировал LKSCTP 1.0.15 и OpenSSL 1.0.1e. Я скомпилировал OpenSSL с ./config sctp.
Я могу скомпилировать образцы, представленные на http://sctp.fh-muenster.de/, однако, когда я пытаюсь выполнить любой из них, они терпят неудачу в утверждении ниже. Сообщение об ошибке:
bss_dgram.c(897): OpenSSL internal error, assertion failed: ret > 0
Ошибка с помощью setsockopt — «Отказано в доступе». Вот код, который не работает в функции BIO_new_dgram_sctp (из bss_dgram.c)
ret = setsockopt(fd, IPPROTO_SCTP, SCTP_AUTH_CHUNK, &auth, sizeof(struct sctp_authchunk));
OPENSSL_assert(ret >= 0);
Вам нужно включить блоки AUTH в sysctl. По-видимому, они по умолчанию отключены в Linux:
sysctl -w net.sctp.auth_enable = 1
Вы можете сделать настройку постоянной, добавив net.sctp.auth_enable = 1
в
/etc/sysctl.conf
,
Смотрите в нижней части README здесь:
https://github.com/jtt/sctp-tools
Других решений пока нет …