@@ -31,6 +31,9 @@ pub type posix_spawn_file_actions_t = *mut ::c_void;
31
31
pub type key_t = :: c_int ;
32
32
pub type shmatt_t = :: c_ushort ;
33
33
34
+ pub type sae_associd_t = u32 ;
35
+ pub type sae_connid_t = u32 ;
36
+
34
37
deprecated_mach ! {
35
38
pub type vm_prot_t = :: c_int;
36
39
pub type vm_size_t = :: uintptr_t;
@@ -493,6 +496,16 @@ s! {
493
496
pub struct in_addr {
494
497
pub s_addr: :: in_addr_t,
495
498
}
499
+
500
+ // sys/socket.h
501
+
502
+ pub struct sa_endpoints_t {
503
+ pub sae_srcif: :: c_uint, // optional source interface
504
+ pub sae_srcaddr: * const :: sockaddr, // optional source address
505
+ pub sae_srcaddrlen: :: socklen_t, // size of source address
506
+ pub sae_dstaddr: * const :: sockaddr, // destination address
507
+ pub sae_dstaddrlen: :: socklen_t, // size of destination address
508
+ }
496
509
}
497
510
498
511
s_no_extra_traits ! {
@@ -2216,6 +2229,8 @@ pub const IPV6_RECVPKTINFO: ::c_int = 61;
2216
2229
pub const TCP_NOPUSH : :: c_int = 4 ;
2217
2230
pub const TCP_NOOPT : :: c_int = 8 ;
2218
2231
pub const TCP_KEEPALIVE : :: c_int = 0x10 ;
2232
+ /// Enable/Disable TCP Fastopen on this socket
2233
+ pub const TCP_FASTOPEN : :: c_int = 0x105 ;
2219
2234
2220
2235
pub const SOL_LOCAL : :: c_int = 0 ;
2221
2236
@@ -2304,6 +2319,23 @@ pub const SHUT_RD: ::c_int = 0;
2304
2319
pub const SHUT_WR : :: c_int = 1 ;
2305
2320
pub const SHUT_RDWR : :: c_int = 2 ;
2306
2321
2322
+ pub const SAE_ASSOCID_ANY : :: sae_associd_t = 0 ;
2323
+ /// ((sae_associd_t)(-1ULL))
2324
+ pub const SAE_ASSOCID_ALL : :: sae_associd_t = 0xffffffff ;
2325
+
2326
+ pub const SAE_CONNID_ANY : :: sae_connid_t = 0 ;
2327
+ /// ((sae_connid_t)(-1ULL))
2328
+ pub const SAE_CONNID_ALL : :: sae_connid_t = 0xffffffff ;
2329
+
2330
+ // connectx() flag parameters
2331
+
2332
+ /// resume connect() on read/write
2333
+ pub const CONNECT_RESUME_ON_READ_WRITE : :: c_uint = 0x1 ;
2334
+ /// data is idempotent
2335
+ pub const CONNECT_DATA_IDEMPOTENT : :: c_uint = 0x2 ;
2336
+ /// data includes security that replaces the TFO-cookie
2337
+ pub const CONNECT_DATA_AUTHENTICATED : :: c_uint = 0x4 ;
2338
+
2307
2339
pub const LOCK_SH : :: c_int = 1 ;
2308
2340
pub const LOCK_EX : :: c_int = 2 ;
2309
2341
pub const LOCK_NB : :: c_int = 4 ;
@@ -3528,6 +3560,22 @@ extern "C" {
3528
3560
newfd : :: c_int ,
3529
3561
) -> :: c_int ;
3530
3562
pub fn uname ( buf : * mut :: utsname ) -> :: c_int ;
3563
+
3564
+ pub fn connectx (
3565
+ socket : :: c_int ,
3566
+ endpoints : * const sa_endpoints_t ,
3567
+ associd : sae_associd_t ,
3568
+ flags : :: c_uint ,
3569
+ iov : * const :: iovec ,
3570
+ iovcnt : :: c_uint ,
3571
+ len : * mut :: size_t ,
3572
+ connid : * mut sae_connid_t ,
3573
+ ) -> :: c_int ;
3574
+ pub fn disconnectx (
3575
+ socket : :: c_int ,
3576
+ associd : sae_associd_t ,
3577
+ connid : sae_connid_t ,
3578
+ ) -> :: c_int ;
3531
3579
}
3532
3580
3533
3581
cfg_if ! {
0 commit comments