sctp_getladdrs and sctp_freeladdrs subroutines

Returns all locally bound addresses on a socket.

Library

/usr/lib/libsctp.a

Syntax

#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);

Description

The sctp_getladdrs subroutine returns all locally bound addresses on a socket. On return, the addrs parameter points to a dynamically allocated packed array of the sockaddr structures of the appropriate type for each local address. You must use the sctp_freeladdrs parameter to free the memory.
Note: The in or out parameter addrs must not be NULL.

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.

Return value

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.