1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use crate::*;

extern "C" {
    pub fn nw_protocol_copy_tcp_definition() -> nw_protocol_definition_t;
    pub fn nw_tcp_create_options() -> nw_protocol_options_t;
    pub fn nw_tcp_options_set_no_delay(options: nw_protocol_options_t,
                                       no_delay: bool);
    pub fn nw_tcp_options_set_no_push(options: nw_protocol_options_t,
                                      no_push: bool);
    pub fn nw_tcp_options_set_no_options(options: nw_protocol_options_t,
                                         no_options: bool);
    pub fn nw_tcp_options_set_enable_keepalive(options: nw_protocol_options_t,
                                               enable_keepalive: bool);
    pub fn nw_tcp_options_set_keepalive_count(options: nw_protocol_options_t,
                                              keepalive_count: u32);
    pub fn nw_tcp_options_set_keepalive_idle_time(options: nw_protocol_options_t,
                                                  keepalive_idle_time: u32);
    pub fn nw_tcp_options_set_keepalive_interval(options: nw_protocol_options_t,
                                                 keepalive_interval: u32);
    pub fn nw_tcp_options_set_maximum_segment_size(options: nw_protocol_options_t,
                                                   maximum_segment_size: u32);
    pub fn nw_tcp_options_set_connection_timeout(options: nw_protocol_options_t,
                                                 connection_timeout: u32);
    pub fn nw_tcp_options_set_persist_timeout(options: nw_protocol_options_t,
                                              persist_timeout: u32);
    pub fn nw_tcp_options_set_retransmit_connection_drop_time(options: nw_protocol_options_t,
                                                              retransmit_connection_drop_time: u32);
    pub fn nw_tcp_options_set_retransmit_fin_drop(options: nw_protocol_options_t,
                                                  retransmit_fin_drop: bool);
    pub fn nw_tcp_options_set_disable_ack_stretching(options: nw_protocol_options_t,
                                                     disable_ack_stretching: bool);
    pub fn nw_tcp_options_set_enable_fast_open(options: nw_protocol_options_t,
                                               enable_fast_open: bool);
    pub fn nw_tcp_options_set_disable_ecn(options: nw_protocol_options_t,
                                          disable_ecn: bool);
    pub fn nw_protocol_metadata_is_tcp(metadata: nw_protocol_metadata_t) -> bool;
    pub fn nw_tcp_get_available_receive_buffer(metadata: nw_protocol_metadata_t) -> u32;
    pub fn nw_tcp_get_available_send_buffer(metadata: nw_protocol_metadata_t) -> u32;
}