Устанавливает проблему с опциями SCTP_PRIMARY_ADDR и SCTP_SET_PEER_PRIMARY_ADDR - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь использовать параметры сокета SCTP_PRIMARY_ADDR, чтобы сделать один из локальных адресов ассоциации SCTP в качестве основного и SCTP_SET_PEER_PRIMARY_ADDR, чтобы запросить сервер SCTP сделать один из его адресов в качестве основного для будущей связи SCTP.

    struct sctp_setprim setPrimary;
    memset((void *)&setPrimary, 0, sizeof(struct sctp_setprim));
    setPrimary.ssp_assoc_id = 0;
    struct sockaddr_in *in_addr;
    in_addr = (struct sockaddr_in *)&setPrimary.ssp_addr;
    in_addr->sin_port = htons(localPort);
    in_addr->sin_family = AF_INET;
    in_addr->sin_addr.s_addr = localIps[0].Int32NetworkOrder();
    int rc = setsockopt(m_s, IPPROTO_SCTP, SCTP_PRIMARY_ADDR, &setPrimary, sizeof(struct sctp_setprim));**

Для приведенного выше фрагмента кода я вижу ошибку сокета "Неверный аргумент". Я не знаю причину этой ошибки. Я подтвердил IP-адрес.

Также для SCTP_SET_PEER_PRIMARY_ADDR, ниже приведен фрагмент кода.

    struct sctp_setpeerprim setPeerPrimary;
    memset((void *)&setPeerPrimary, 0, sizeof(struct sctp_setpeerprim));
    setPeerPrimary.sspp_assoc_id = 0;
    struct sockaddr_in *in_addr;
    in_addr = (struct sockaddr_in *)&setPeerPrimary.sspp_addr;
    in_addr->sin_port = htons(remotePort);
    in_addr->sin_family = AF_INET;
    in_addr->sin_addr.s_addr = remoteIps[0].Int32NetworkOrder();
    int rc = setsockopt(m_s, IPPROTO_SCTP, SCTP_SET_PEER_PRIMARY_ADDR, &setPeerPrimary, sizeof(struct sctp_setpeerprim));

Для этого блока кода я вижу ошибку "Операция не разрешена". И опять же, я ничего не понимаю об этой причине ошибки.

Я делаю что-то действительно неправильно или моя библиотека sctp не поддерживает указанные выше параметры сокетов?

Пожалуйста, помогите.

...