Литмир - Электронная Библиотека
Содержание  
A
A

■ 

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

Константа Описание
sctp_data_io_event Включение и отключение доставки sctp_sndrcvinfo с каждым вызовом recvmsg
sctp_association_event Включение и отключение уведомлений о состоянии ассоциации
sctp_address_event Включение и отключение уведомлений об адресах
sctp_send_failure_event Включение и отключение уведомлений об ошибках доставки сообщений
sctp_peer_error_event Включение и отключение уведомлений об ошибках протокола собеседника
sctp_shutdown_event Включение и отключение уведомлений о завершении ассоциации
sctp_partial_delivery_event Включение и отключение уведомлений о частичной доставке
sctp_adaption_layer_event Включение и отключение уведомлений уровня-адаптера

Параметр сокета SCTP_GET_PEER_ADDR_INFO

Этот параметр позволяет получить информацию о собеседнике, которая включает окно приема, сглаженные значения RTT и MTU. Параметр может быть применен только к конкретному адресу собеседника. Вызывающее приложение заполняет поле

spinfo_address
структуры
sctp_paddrinfo
интересующим его адресом собеседника. Для максимальной переносимости рекомендуется работать с функцией
sctp_opt_info
, а не
getsockopt
. Формат структуры
sctp_paddrinfo
описан ниже:

struct sctp_paddrinfo {

 sctp_assoc_t spinfo_assoc_id;

 struct sockaddr_storage spinfo_address;

 int32_t spinfo_state;

 uint32_t spinfo_cwnd;

 u_int32_t spinfo_srtt;

 u_int32_t spinfo_rto;

 u_int32_t spinfo_mtu;

90
{"b":"225366","o":1}