Поддержка этой функции SCTP не является обязательной. Если локальная конечная точка не поддерживает параметр, процессу будет возвращена ошибка EOPNOTSUPP. Если же параметр не поддерживается удаленной конечной точкой, ошибка будет другой: EINVAL. Обратите внимание, что данный параметр не может использоваться для считывания основного адреса; он служит только для установки нового адреса в качестве основного.
Параметр сокета SCTP_STATUS
Этот параметр сокета служит для получения информации о текущем статусе ассоциации SCTP. Для обеспечения максимальной переносимости пользуйтесь функцией sctp_opt_info
getaddrinfo
. Приложение должно предоставить структуру sctp_status
, указав идентификатор ассоциации sstat_assoc_id
. Структура будет заполнена информацией о выбранной ассоциации и возвращена приложению. Формат структуры sctp_status
таков:struct sctp_status {
sctp_assoc_t sstat_assoc_id;
int32_t sstat_state;
u_int32_t sstat_rwnd;
u_int16_t sstat_unackdata;
u_int16_t sstat_penddata;
u_int16_t sstat_instrms;
u_int16_t sstat_outstrms;
u_int32_t sstat_fragmentation_point;
struct sctp_paddrinfo sstat_primary;
};
Поля структуры имеют следующий смысл:
■ sstat_assoc_id
■ sstat_state
■ sstat_rwnd
■ sstat_unackdata
■ sstat_penddata
■ sstat_instrms
■ sstat_outstrms
■ sstat_fragmentation_point
SCTP_MAXSEG
;■ sstat_primary
Таблица 7.8
. Состояния SCTPКонстанта | Описание |
---|---|
SCTP_CLOSED | Ассоциация закрыта |
SCTP_COOKIE_WAIT | Ассоциация отправила пакет INIT |
SCTP_COOKIE_ECHOED | Ассоциация отправила эхо-ответ cookie |
SCTP_ESTABLISHED | Ассоциация установлена |
SCTP_SHUTDOWN_PENDING | Ассоциация ждет отправки сообщения о завершении |
SCTP_SHUTDOWN_SENT | Ассоциация отправила сообщение о завершении |
SCTP_SHUTDOWN_RECEIVED | Ассоциация получила сообщение о завершении |
SCTP_SHUTDOWN_ACK_SENT | Ассоциация ждет пакета SHUTDOWN-COMPLETE |
Эти параметры полезны для диагностики соединения и определения характеристик текущего сеанса. Например, функция sctp_get_no_strms
sstat_outstrms
для определения количества доступных для отправки данных потоков. Низкое значение sstat_rwnd
или высокое значение sstat_unackdata
позволяет сделать вывод о заполнении приемного буфера собеседника, так что приложение может вовремя замедлить передачу данных. Поле sstat_fragmentation_point
может использоваться некоторыми приложениями для уменьшения количества пакетов, создаваемых SCTP, путем уменьшения размеров сообщений.7.11. Функция fcntl
Сокращение fcntl
fcntl
и ioctl
и маршрутизирующими сокетами.Таблица 7.9
. Операции функций fcntl и ioctl и маршрутизирующих сокетов