9.5 sctp_getpaddrs Function
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.
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.