sinfo_timetolive
определяет время жизни отправляемых сообщений. Поле времени жизни используется стеком SCTP для того, чтобы сбрасывать сообщения, задержавшиеся в буфере отправки на слишком большой срок и не переданные ни разу. Если обе конечные точки поддерживают режим частичной надежности, параметр времени жизни влияет и на количество попыток повторной передачи, ограничивая их срок;
sinfo_tsn
игнорируется при установке параметров по умолчанию. При получении сообщений функцией
recvmsg
или
sctp_recvmsg
это поле содержит значение транспортного последовательного номера (transport sequence number, TSN), помещенное собеседником в порцию данных SCTP;
sinfo_cumtsn
игнорируется при установке параметров по умолчанию. При получении сообщений функцией
recvmsg
или
sctp_recvmsg
это поле содержит значение кумулятивного транспортного последовательного номера, вычисленного локальным стеком SCTP для удаленного собеседника;
sinfo
_assoc_id содержит идентификатор ассоциации, для которой требуется установка параметров по умолчанию. Для сокетов типа «один-к-одному» это поле игнорируется.Таблица 7.5
. Допустимые значения флагов SCTP (поле sinfo_flags)Константа | Описание |
---|---|
MSG_ABORT | Вызывает аварийное завершение ассоциации |
MSG_ADDR_OVER | Заставляет SCTP использовать указанный адрес вместо адреса по умолчанию |
MSG_EOF | Корректное завершение ассоциации после отправки сообщения |
MSG_PR_BUFFER | Включение частичной надежности в зависимости от буфера (если она вообще поддерживается) |
MSG_PR_SCTP | Включение частичной надежности доставки для данного сообщения (если поддерживается) |
MSG_UNORDERED | Указывает, что данное сообщение использует сервис неупорядоченной доставки |
Обратите внимание, что значения параметров по умолчанию используются только тогда, когда сообщение отправляется без собственной структуры
sctp_sndrcvinfo
. Если же эта структура добавляется во вспомогательные данные при отправке сообщений, заданные в ней значения имеют приоритет перед значениями по умолчанию. Параметр
SCTP_DEFAULT_SEND_PARAM
может использоваться для получения текущих значений по умолчанию при помощи функции
sctp_opt_info
.Параметр сокета SCTP_DISАВLE_FRAGМENTS
В обычном режиме работы SCTP фрагментирует все сообщения, не помещающиеся в один пакет SCTP, разбивая их на несколько порций типа DATA. Установка параметра
SCTP_DISABLE_FRAGMENTS
отключает фрагментацию для данного отправителя. Если сообщение требует фрагментации, а фрагментация отключена, SCTP возвращает ошибку
EMSGSIZE
и не отсылает сообщение.Параметр может использоваться приложениями, которые хотят самостоятельно управлять размерами сообщений, при условии, что любое из этих сообщений может поместиться в IP-пакет. Приложение должно быть готово обработать ошибку, обеспечив фрагментацию на уровне приложения или изменение размера сообщений.
Параметр сокета SCTP_EVENTS
Этот параметр сокета позволяет включать, выключать и определять состояние подписки на различные уведомления SCTP. Уведомление SCTP представляет собой сообщение, отправляемое стеком SCTP приложению. Сообщение считывается как и обычные данные, однако в поле
msg_flags
при вызове функции
recvmsg
должно находиться значение
MSG_NOTIFICATION
. Приложение, не готовое к использованию
recvmsg
или
sctp_recvmsg
, не должно включать подписку на события. Параметр позволяет управлять событиями восьми различных типов и передавать структуру
sctp_event_subscribe
. Нулевое значение соответствует отключению подписки, а единица — включению.Структура
sctp_event_subscribe
определяется следующим образом:struct sctp_event_subscribe {
u_int8_t sctp_data_io_event;
u_int8_t sctp_association_event;
u_int8_t sctp_address_event;
u_int8_t sctp_send_failure_event;
u_int8_t sctp_peer_error_event;
u_int8_t sctp_shutdown_event;
u_int8_t sctp_partial_delivery_event;
u_int8_t sctp_adaption_layer_event;
};
В табл. 7.6 описано назначение различных событий. Подробнее об уведомлениях вы узнаете в разделе 9.14.
Таблица 7.6
. События SCTP