MCPcopy Create free account
hub / github.com/SIPp/sipp / sipp_sctp_peer_params

Method sipp_sctp_peer_params

src/socket.cpp:1682–1719  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1680
1681#ifdef USE_SCTP
1682void SIPpSocket::sipp_sctp_peer_params()
1683{
1684 if (heartbeat > 0 || pathmaxret > 0) {
1685 struct sctp_paddrparams peerparam;
1686 memset(&peerparam, 0, sizeof(peerparam));
1687
1688 sockaddr* addresses;
1689#ifdef __SUNOS
1690 /* Sun takes a void** instead of a struct sockaddr** */
1691 int addresscount = sctp_getpaddrs(ss_fd, 0, (void**)&addresses);
1692#else
1693 int addresscount = sctp_getpaddrs(ss_fd, 0, &addresses);
1694#endif
1695 if (addresscount < 1) WARNING("sctp_getpaddrs, errno=%d", errno);
1696
1697 for (int i = 0; i < addresscount; i++) {
1698 memset(&peerparam.spp_address, 0, sizeof(peerparam.spp_address));
1699 struct sockaddr_storage* peeraddress = (struct sockaddr_storage*) &addresses[i];
1700 memcpy(&peerparam.spp_address, peeraddress, sizeof(*peeraddress));
1701
1702 peerparam.spp_hbinterval = heartbeat;
1703 peerparam.spp_pathmaxrxt = pathmaxret;
1704 if (heartbeat > 0) peerparam.spp_flags = SPP_HB_ENABLE;
1705
1706 if (pmtu > 0) {
1707 peerparam.spp_pathmtu = pmtu;
1708 peerparam.spp_flags |= SPP_PMTUD_DISABLE;
1709 }
1710
1711 if (setsockopt(ss_fd, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS,
1712 &peerparam, sizeof(peerparam)) == -1) {
1713 sctp_freepaddrs(addresses);
1714 WARNING("setsockopt(SCTP_PEER_ADDR_PARAMS) failed, errno=%d", errno);
1715 }
1716 }
1717 sctp_freepaddrs(addresses);
1718 }
1719}
1720#endif
1721
1722void sipp_customize_socket(SIPpSocket *socket)

Callers

nothing calls this directly

Calls 1

WARNINGFunction · 0.85

Tested by

no test coverage detected