The getpeername function was not designed with the concept of a multihoming-aware transport protocol; when using SCTP, it only returns the primary address. When all the addresses are required, the sctp_getpaddrs function provides a mechanism for an application to retrieve all the addresses of a peer.
#include <netinet/sctp.h> |
int sctp_getpaddrs(int sockfd , sctp_assoc_t id , struct sockaddr ** addrs ); |
Returns: the number of peer addresses stored in addrs , 1 on error |
The
sockfd parameter is the socket descriptor returned by the socket function. The
id is the association identification for a one-to-many-style socket. If the socket is using the one-to-one style, the
id field is ignored.
addrs is the address of a pointer that sctp_getpaddrs will fill in with a locally allocated, packed list of addresses. See Figures 9.4 and 23.12 for details on the structure of this return value. The caller should use sctp_freepaddrs to free resources allocated by sctp_getpaddrs when finished with them.