Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
cc [ flag... ] file... -lsocket -lnsl -lsctp [ library... ] #include <sys/types.h> #include <sys/socket.h> #include <netinet/sctp.h> int sctp_bindx(int sock, void *addrs, int addrcnt, int flags);
The sctp_bindx() function adds or removes addresses to or from an SCTP socket. If sock is an Internet Protocol Version 4 (IPv4) socket, addrs should be an array of sockaddr_in structures containing IPv4 addresses. If sock is an Internet Protocol Version 6 (IPv6) socket, addrs should be an array of sockaddr_in6 structures containing IPv6 or IPv4-mapped IPv6 addresses. The addrcnt is the number of array elements in addrs. The family of the address type is used with addrcnt to determine the size of the array.
The flags parameter is a bitmask that indicates whether addresses are to be added or removed from a socket. The flags parameter is formed by bitwise OR of zero or more of the following flags:
SCTP_BINDX_ADD_ADDR
Indicates that addresses from addrs should be added to the SCTP socket.
SCTP_BINDX_REM_ADDR
Indicates that addresses from addrs should be removed from the SCTP socket.
These two flags are mutually exclusive. If flags is formed by a bitwise OR of both SCTP_BINDX_ADD_ADDR and SCTP_BINDX_REM_ADDR, the sctp_bindx() function will fail.
Prior to calling sctp_bindx() on an SCTP endpoint, the endpoint should be bound using bind(3SOCKET). On a listening socket, a special INADDR_ANY value for IP or an unspecified address of all zeros for IPv6 can be used in addrs to add all IPv4 or IPv6 addresses on the system to the socket. The sctp_bindx() function can also be used to add or remove addresses to or from an established association. In such a case, messages are exchanged between the SCTP endpoints to update the address lists for that association if both endpoints support dynamic address reconfiguration.
Upon successful completion, the sctp_bindx() function returns 0. Otherwise, the function returns -1 and sets errno to indicate the error.
The sctp_bindx() call fails under the following conditions.
EBADF
The sock argument is an invalid file descriptor.
ENOTSOCK
The sock argument is not a socket.
EINVAL
One or more of the IPv4 or IPv6 addresses is invalid.
EINVAL
The endpoint is not bound.
EINVAL
The last address is requested to be removed from an established association.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
Interface Stability | Committed |
MT-Level | Safe |
bind(3SOCKET), in.h(3HEAD), libsctp(3LIB), listen(3SOCKET), sctp_freeladdrs(3SOCKET), sctp_freepaddrs(3SOCKET), sctp_getladdrs(3SOCKET), sctp_getpaddrs(3SOCKET), socket(3SOCKET), inet(7P), inet6(7P), ip(7P), ip6(7P), sctp(7P)
IPv4-mapped addresses are not recommended.