1pub const SHUT_RD: u32 = 0;
4pub const SHUT_WR: u32 = 1;
5pub const SHUT_RDWR: u32 = 2;
6pub const UTP_IOV_MAX: u32 = 1024;
7pub type __uint8_t = ::core::ffi::c_uchar;
8pub type sa_family_t = __uint8_t;
9pub type socklen_t = u32;
10pub type byte = ::core::ffi::c_uchar;
11pub type uint16 = ::core::ffi::c_ushort;
12pub type uint32 = ::core::ffi::c_uint;
13pub type uint64 = ::core::ffi::c_ulonglong;
14#[repr(C)]
15#[derive(Debug, Copy, Clone)]
16pub struct UTPSocket {
17 _unused: [u8; 0],
18}
19pub type utp_socket = UTPSocket;
20#[repr(C)]
21#[derive(Debug, Copy, Clone)]
22pub struct struct_utp_context {
23 _unused: [u8; 0],
24}
25pub type utp_context = struct_utp_context;
26pub const UTP_UDP_DONTFRAG: _bindgen_ty_1 = 2;
27pub type _bindgen_ty_1 = ::core::ffi::c_uint;
28pub const UTP_STATE_CONNECT: _bindgen_ty_2 = 1;
29pub const UTP_STATE_WRITABLE: _bindgen_ty_2 = 2;
30pub const UTP_STATE_EOF: _bindgen_ty_2 = 3;
31pub const UTP_STATE_DESTROYING: _bindgen_ty_2 = 4;
32pub type _bindgen_ty_2 = ::core::ffi::c_uint;
33unsafe extern "C" {
34 pub static mut utp_state_names: [*const ::core::ffi::c_char; 0usize];
35}
36pub const UTP_ECONNREFUSED: _bindgen_ty_3 = 0;
37pub const UTP_ECONNRESET: _bindgen_ty_3 = 1;
38pub const UTP_ETIMEDOUT: _bindgen_ty_3 = 2;
39pub type _bindgen_ty_3 = ::core::ffi::c_uint;
40unsafe extern "C" {
41 pub static mut utp_error_code_names: [*const ::core::ffi::c_char; 0usize];
42}
43pub const UTP_ON_FIREWALL: _bindgen_ty_4 = 0;
44pub const UTP_ON_ACCEPT: _bindgen_ty_4 = 1;
45pub const UTP_ON_CONNECT: _bindgen_ty_4 = 2;
46pub const UTP_ON_ERROR: _bindgen_ty_4 = 3;
47pub const UTP_ON_READ: _bindgen_ty_4 = 4;
48pub const UTP_ON_OVERHEAD_STATISTICS: _bindgen_ty_4 = 5;
49pub const UTP_ON_STATE_CHANGE: _bindgen_ty_4 = 6;
50pub const UTP_GET_READ_BUFFER_SIZE: _bindgen_ty_4 = 7;
51pub const UTP_ON_DELAY_SAMPLE: _bindgen_ty_4 = 8;
52pub const UTP_GET_UDP_MTU: _bindgen_ty_4 = 9;
53pub const UTP_GET_UDP_OVERHEAD: _bindgen_ty_4 = 10;
54pub const UTP_GET_MILLISECONDS: _bindgen_ty_4 = 11;
55pub const UTP_GET_MICROSECONDS: _bindgen_ty_4 = 12;
56pub const UTP_GET_RANDOM: _bindgen_ty_4 = 13;
57pub const UTP_LOG: _bindgen_ty_4 = 14;
58pub const UTP_SENDTO: _bindgen_ty_4 = 15;
59pub const UTP_LOG_NORMAL: _bindgen_ty_4 = 16;
60pub const UTP_LOG_MTU: _bindgen_ty_4 = 17;
61pub const UTP_LOG_DEBUG: _bindgen_ty_4 = 18;
62pub const UTP_SNDBUF: _bindgen_ty_4 = 19;
63pub const UTP_RCVBUF: _bindgen_ty_4 = 20;
64pub const UTP_TARGET_DELAY: _bindgen_ty_4 = 21;
65pub const UTP_ARRAY_SIZE: _bindgen_ty_4 = 22;
66pub type _bindgen_ty_4 = ::core::ffi::c_uint;
67unsafe extern "C" {
68 pub static mut utp_callback_names: [*const ::core::ffi::c_char; 0usize];
69}
70#[repr(C)]
71#[derive(Copy, Clone)]
72pub struct utp_callback_arguments {
73 pub context: *mut utp_context,
74 pub socket: *mut utp_socket,
75 pub len: usize,
76 pub flags: uint32,
77 pub callback_type: ::core::ffi::c_int,
78 pub buf: *const byte,
79 pub unnamed_field1: utp_callback_arguments__bindgen_ty_1,
80 pub unnamed_field2: utp_callback_arguments__bindgen_ty_2,
81}
82#[repr(C)]
83#[derive(Copy, Clone)]
84pub union utp_callback_arguments__bindgen_ty_1 {
85 pub address: *const sockaddr,
86 pub send: ::core::ffi::c_int,
87 pub sample_ms: ::core::ffi::c_int,
88 pub error_code: ::core::ffi::c_int,
89 pub state: ::core::ffi::c_int,
90}
91#[allow(clippy::unnecessary_operation, clippy::identity_op)]
92const _: () = {
93 ["Size of utp_callback_arguments__bindgen_ty_1"]
94 [::core::mem::size_of::<utp_callback_arguments__bindgen_ty_1>() - 8usize];
95 ["Alignment of utp_callback_arguments__bindgen_ty_1"]
96 [::core::mem::align_of::<utp_callback_arguments__bindgen_ty_1>() - 8usize];
97 ["Offset of field: utp_callback_arguments__bindgen_ty_1::address"]
98 [::core::mem::offset_of!(utp_callback_arguments__bindgen_ty_1, address) - 0usize];
99 ["Offset of field: utp_callback_arguments__bindgen_ty_1::send"]
100 [::core::mem::offset_of!(utp_callback_arguments__bindgen_ty_1, send) - 0usize];
101 ["Offset of field: utp_callback_arguments__bindgen_ty_1::sample_ms"]
102 [::core::mem::offset_of!(utp_callback_arguments__bindgen_ty_1, sample_ms) - 0usize];
103 ["Offset of field: utp_callback_arguments__bindgen_ty_1::error_code"]
104 [::core::mem::offset_of!(utp_callback_arguments__bindgen_ty_1, error_code) - 0usize];
105 ["Offset of field: utp_callback_arguments__bindgen_ty_1::state"]
106 [::core::mem::offset_of!(utp_callback_arguments__bindgen_ty_1, state) - 0usize];
107};
108#[repr(C)]
109#[derive(Copy, Clone)]
110pub union utp_callback_arguments__bindgen_ty_2 {
111 pub address_len: socklen_t,
112 pub type_: ::core::ffi::c_int,
113}
114#[allow(clippy::unnecessary_operation, clippy::identity_op)]
115const _: () = {
116 ["Size of utp_callback_arguments__bindgen_ty_2"]
117 [::core::mem::size_of::<utp_callback_arguments__bindgen_ty_2>() - 4usize];
118 ["Alignment of utp_callback_arguments__bindgen_ty_2"]
119 [::core::mem::align_of::<utp_callback_arguments__bindgen_ty_2>() - 4usize];
120 ["Offset of field: utp_callback_arguments__bindgen_ty_2::address_len"]
121 [::core::mem::offset_of!(utp_callback_arguments__bindgen_ty_2, address_len) - 0usize];
122 ["Offset of field: utp_callback_arguments__bindgen_ty_2::type_"]
123 [::core::mem::offset_of!(utp_callback_arguments__bindgen_ty_2, type_) - 0usize];
124};
125#[allow(clippy::unnecessary_operation, clippy::identity_op)]
126const _: () = {
127 ["Size of utp_callback_arguments"][::core::mem::size_of::<utp_callback_arguments>() - 56usize];
128 ["Alignment of utp_callback_arguments"]
129 [::core::mem::align_of::<utp_callback_arguments>() - 8usize];
130 ["Offset of field: utp_callback_arguments::context"]
131 [::core::mem::offset_of!(utp_callback_arguments, context) - 0usize];
132 ["Offset of field: utp_callback_arguments::socket"]
133 [::core::mem::offset_of!(utp_callback_arguments, socket) - 8usize];
134 ["Offset of field: utp_callback_arguments::len"]
135 [::core::mem::offset_of!(utp_callback_arguments, len) - 16usize];
136 ["Offset of field: utp_callback_arguments::flags"]
137 [::core::mem::offset_of!(utp_callback_arguments, flags) - 24usize];
138 ["Offset of field: utp_callback_arguments::callback_type"]
139 [::core::mem::offset_of!(utp_callback_arguments, callback_type) - 28usize];
140 ["Offset of field: utp_callback_arguments::buf"]
141 [::core::mem::offset_of!(utp_callback_arguments, buf) - 32usize];
142};
143pub type utp_callback_t =
144 ::core::option::Option<unsafe extern "C" fn(arg1: *mut utp_callback_arguments) -> uint64>;
145#[repr(C)]
146#[derive(Debug, Copy, Clone)]
147pub struct utp_context_stats {
148 pub _nraw_recv: [uint32; 5usize],
149 pub _nraw_send: [uint32; 5usize],
150}
151#[allow(clippy::unnecessary_operation, clippy::identity_op)]
152const _: () = {
153 ["Size of utp_context_stats"][::core::mem::size_of::<utp_context_stats>() - 40usize];
154 ["Alignment of utp_context_stats"][::core::mem::align_of::<utp_context_stats>() - 4usize];
155 ["Offset of field: utp_context_stats::_nraw_recv"]
156 [::core::mem::offset_of!(utp_context_stats, _nraw_recv) - 0usize];
157 ["Offset of field: utp_context_stats::_nraw_send"]
158 [::core::mem::offset_of!(utp_context_stats, _nraw_send) - 20usize];
159};
160#[repr(C)]
161#[derive(Debug, Copy, Clone)]
162pub struct utp_socket_stats {
163 pub nbytes_recv: uint64,
164 pub nbytes_xmit: uint64,
165 pub rexmit: uint32,
166 pub fastrexmit: uint32,
167 pub nxmit: uint32,
168 pub nrecv: uint32,
169 pub nduprecv: uint32,
170 pub mtu_guess: uint32,
171}
172#[allow(clippy::unnecessary_operation, clippy::identity_op)]
173const _: () = {
174 ["Size of utp_socket_stats"][::core::mem::size_of::<utp_socket_stats>() - 40usize];
175 ["Alignment of utp_socket_stats"][::core::mem::align_of::<utp_socket_stats>() - 8usize];
176 ["Offset of field: utp_socket_stats::nbytes_recv"]
177 [::core::mem::offset_of!(utp_socket_stats, nbytes_recv) - 0usize];
178 ["Offset of field: utp_socket_stats::nbytes_xmit"]
179 [::core::mem::offset_of!(utp_socket_stats, nbytes_xmit) - 8usize];
180 ["Offset of field: utp_socket_stats::rexmit"]
181 [::core::mem::offset_of!(utp_socket_stats, rexmit) - 16usize];
182 ["Offset of field: utp_socket_stats::fastrexmit"]
183 [::core::mem::offset_of!(utp_socket_stats, fastrexmit) - 20usize];
184 ["Offset of field: utp_socket_stats::nxmit"]
185 [::core::mem::offset_of!(utp_socket_stats, nxmit) - 24usize];
186 ["Offset of field: utp_socket_stats::nrecv"]
187 [::core::mem::offset_of!(utp_socket_stats, nrecv) - 28usize];
188 ["Offset of field: utp_socket_stats::nduprecv"]
189 [::core::mem::offset_of!(utp_socket_stats, nduprecv) - 32usize];
190 ["Offset of field: utp_socket_stats::mtu_guess"]
191 [::core::mem::offset_of!(utp_socket_stats, mtu_guess) - 36usize];
192};
193#[repr(C)]
194#[derive(Debug, Copy, Clone)]
195pub struct utp_iovec {
196 pub iov_base: *mut ::core::ffi::c_void,
197 pub iov_len: usize,
198}
199#[allow(clippy::unnecessary_operation, clippy::identity_op)]
200const _: () = {
201 ["Size of utp_iovec"][::core::mem::size_of::<utp_iovec>() - 16usize];
202 ["Alignment of utp_iovec"][::core::mem::align_of::<utp_iovec>() - 8usize];
203 ["Offset of field: utp_iovec::iov_base"][::core::mem::offset_of!(utp_iovec, iov_base) - 0usize];
204 ["Offset of field: utp_iovec::iov_len"][::core::mem::offset_of!(utp_iovec, iov_len) - 8usize];
205};
206unsafe extern "C" {
207 pub fn utp_init(version: ::core::ffi::c_int) -> *mut utp_context;
208}
209unsafe extern "C" {
210 pub fn utp_destroy(ctx: *mut utp_context);
211}
212unsafe extern "C" {
213 pub fn utp_set_callback(
214 ctx: *mut utp_context,
215 callback_name: ::core::ffi::c_int,
216 proc_: utp_callback_t,
217 );
218}
219unsafe extern "C" {
220 pub fn utp_context_set_userdata(
221 ctx: *mut utp_context,
222 userdata: *mut ::core::ffi::c_void,
223 ) -> *mut ::core::ffi::c_void;
224}
225unsafe extern "C" {
226 pub fn utp_context_get_userdata(ctx: *mut utp_context) -> *mut ::core::ffi::c_void;
227}
228unsafe extern "C" {
229 pub fn utp_context_set_option(
230 ctx: *mut utp_context,
231 opt: ::core::ffi::c_int,
232 val: ::core::ffi::c_int,
233 ) -> ::core::ffi::c_int;
234}
235unsafe extern "C" {
236 pub fn utp_context_get_option(
237 ctx: *mut utp_context,
238 opt: ::core::ffi::c_int,
239 ) -> ::core::ffi::c_int;
240}
241unsafe extern "C" {
242 pub fn utp_process_udp(
243 ctx: *mut utp_context,
244 buf: *const byte,
245 len: usize,
246 to: *const sockaddr,
247 tolen: socklen_t,
248 ) -> ::core::ffi::c_int;
249}
250unsafe extern "C" {
251 pub fn utp_process_icmp_error(
252 ctx: *mut utp_context,
253 buffer: *const byte,
254 len: usize,
255 to: *const sockaddr,
256 tolen: socklen_t,
257 ) -> ::core::ffi::c_int;
258}
259unsafe extern "C" {
260 pub fn utp_process_icmp_fragmentation(
261 ctx: *mut utp_context,
262 buffer: *const byte,
263 len: usize,
264 to: *const sockaddr,
265 tolen: socklen_t,
266 next_hop_mtu: uint16,
267 ) -> ::core::ffi::c_int;
268}
269unsafe extern "C" {
270 pub fn utp_check_timeouts(ctx: *mut utp_context);
271}
272unsafe extern "C" {
273 pub fn utp_issue_deferred_acks(ctx: *mut utp_context);
274}
275unsafe extern "C" {
276 pub fn utp_get_context_stats(ctx: *mut utp_context) -> *mut utp_context_stats;
277}
278unsafe extern "C" {
279 pub fn utp_create_socket(ctx: *mut utp_context) -> *mut utp_socket;
280}
281unsafe extern "C" {
282 pub fn utp_set_userdata(
283 s: *mut utp_socket,
284 userdata: *mut ::core::ffi::c_void,
285 ) -> *mut ::core::ffi::c_void;
286}
287unsafe extern "C" {
288 pub fn utp_get_userdata(s: *mut utp_socket) -> *mut ::core::ffi::c_void;
289}
290unsafe extern "C" {
291 pub fn utp_setsockopt(
292 s: *mut utp_socket,
293 opt: ::core::ffi::c_int,
294 val: ::core::ffi::c_int,
295 ) -> ::core::ffi::c_int;
296}
297unsafe extern "C" {
298 pub fn utp_getsockopt(s: *mut utp_socket, opt: ::core::ffi::c_int) -> ::core::ffi::c_int;
299}
300unsafe extern "C" {
301 pub fn utp_connect(
302 s: *mut utp_socket,
303 to: *const sockaddr,
304 tolen: socklen_t,
305 ) -> ::core::ffi::c_int;
306}
307unsafe extern "C" {
308 pub fn utp_write(s: *mut utp_socket, buf: *mut ::core::ffi::c_void, count: usize) -> isize;
309}
310unsafe extern "C" {
311 pub fn utp_writev(s: *mut utp_socket, iovec: *mut utp_iovec, num_iovecs: usize) -> isize;
312}
313unsafe extern "C" {
314 pub fn utp_getpeername(
315 s: *mut utp_socket,
316 addr: *mut sockaddr,
317 addrlen: *mut socklen_t,
318 ) -> ::core::ffi::c_int;
319}
320unsafe extern "C" {
321 pub fn utp_read_drained(s: *mut utp_socket);
322}
323unsafe extern "C" {
324 pub fn utp_get_delays(
325 s: *mut utp_socket,
326 ours: *mut uint32,
327 theirs: *mut uint32,
328 age: *mut uint32,
329 ) -> ::core::ffi::c_int;
330}
331unsafe extern "C" {
332 pub fn utp_get_stats(s: *mut utp_socket) -> *mut utp_socket_stats;
333}
334unsafe extern "C" {
335 pub fn utp_get_context(s: *mut utp_socket) -> *mut utp_context;
336}
337unsafe extern "C" {
338 pub fn utp_shutdown(s: *mut utp_socket, how: ::core::ffi::c_int);
339}
340unsafe extern "C" {
341 pub fn utp_close(s: *mut utp_socket);
342}