2 #ifndef __UDP_REQUEST_H_P__
3 #define __UDP_REQUEST_H_P__ 1
9 #include <event2/event.h>
14 typedef struct UDPRequestStatus_
{
16 _Bool is_in_queue
: 1;
19 typedef struct UDPRequest_
{
20 uint8_t client_nonce
[crypto_box_HALF_NONCEBYTES
];
21 TAILQ_ENTRY(UDPRequest_
) queue
;
22 struct sockaddr_storage client_sockaddr
;
23 ProxyContext
*proxy_context
;
24 struct event
*sendto_retry_timer
;
25 struct event
*timeout_timer
;
26 evutil_socket_t client_proxy_handle
;
27 ev_socklen_t client_sockaddr_len
;
28 UDPRequestStatus status
;
29 unsigned char retries
;
32 typedef struct SendtoWithRetryCtx_
{
33 void (*cb
) (UDPRequest
*udp_request
);
35 UDPRequest
*udp_request
;
36 const struct sockaddr
*dest_addr
;
37 evutil_socket_t handle
;
39 ev_socklen_t dest_len
;