Closed
Description
The connectx
system call
This function is commonly used for inititiating a TCP Fast Open connection.
Available since iOS 9 and OS X 10.11
// Original definition in /usr/include/sys
__API_AVAILABLE(macosx(10.11), ios(9.0), tvos(9.0), watchos(2.0))
int connectx(int, const sa_endpoints_t *, sae_associd_t, unsigned int,
const struct iovec *, unsigned int, size_t *, sae_connid_t *);
__API_AVAILABLE(macosx(10.11), ios(9.0), tvos(9.0), watchos(2.0))
int disconnectx(int, sae_associd_t, sae_connid_t);
Definition:
int connectx(int socket,
const sa_endpoints_t *endpoints,
sae_associd_t associd /* Reserved, always be SAE_ASSOCID_ANY */,
unsigned int flags,
const struct iovec *iov,
unsigned int iovcnt,
size_t *len,
sae_connid_t *connid /* Reserved, always be NULL */);
Example usage:
struct sockaddr_in sa;
memcpy(&sa, /* TARGET ADDR */, sizeof(struct sockaddr_in));
sa.sin_len = sizeof(struct sockaddr_in);
sa_endpoints_t endpoints;
memset((char *)&endpoints, 0, sizeof(endpoints));
endpoints.sae_dstaddr = (struct sockaddr *)&sa;
endpoints.sae_dstaddrlen = /* TARGET ADDR LEN */;
s = connectx(sockfd,
&endpoints,
SAE_ASSOCID_ANY,
CONNECT_DATA_IDEMPOTENT | CONNECT_RESUME_ON_READ_WRITE,
NULL,
0,
NULL,
NULL);
Variable definitions
-
SAE_ASSOCID_ANY
// Defined in /usr/include/sys/socket.h (MacOSX.sdk) #define SAE_ASSOCID_ANY 0
-
CONNECT_DATA_IDEMPOTENT
andCONNECT_RESUME_ON_READ_WRITE
// Defined in /usr/include/sys/socket.h (MacOSX.sdk) #define CONNECT_RESUME_ON_READ_WRITE 0x1 /* resume connect() on read/write */ #define CONNECT_DATA_IDEMPOTENT 0x2 /* data is idempotent */
sa_endpoints_t
// Defined in /usr/include/sys/socket.h (MacOSX.sdk)
/* sockaddr endpoints */
typedef struct sa_endpoints {
unsigned int sae_srcif; /* optional source interface */
const struct sockaddr *sae_srcaddr; /* optional source address */
socklen_t sae_srcaddrlen; /* size of source address */
const struct sockaddr *sae_dstaddr; /* destination address */
socklen_t sae_dstaddrlen; /* size of destination address */
} sa_endpoints_t;
sae_associd_t
// Defined in /usr/include/sys/socket.h (MacOSX.sdk)
typedef __uint32_t sae_associd_t;
Metadata
Metadata
Assignees
Labels
No labels