sctp_getladdrs and sctp_freeladdrs subroutines
Returns all locally bound addresses on a socket.
#include <sys/types.h> #include <sys/socket.h> #include <netinet/sctp.h> int sctp_getladdrs(int sd, sctp_assoc_t assoc_id, struct sockaddr **addrs); void sctp_freeladdrs(struct sockaddr *addrs);
If the sd parameter is an IPv4 socket, the addresses returned are all IPv4 addresses. If the sd parameter is an IPv6 socket, the addresses returned can be a mix of IPv4 or IPv6 addresses.
For one-to-many style sockets, the id field specifies the association to query. For one-to-one style sockets, the id field is ignored. If the id field is set to 0, the locally bound addresses are returned without regard to any particular association.
The sctp_freeladdrs subroutine frees all the resources allocated by the sctp_getladdrs subroutine.
On success, the sctp_getladdrs subroutine returns the number of local addresses bound to the socket. If the socket is unbound, 0 is returned and the value of the *addrs field is undefined. On error, the sctp_getladdrs subroutine returns -1, and the value of the *addrs field is undefined.