dnscrypt-proxy update: 1.4.1
[tomato.git] / release / src / router / dnscrypt / src / proxy / udp_request_p.h
blob3625fec89a54b15ffc44313e25329e6624c8f76b
2 #ifndef __UDP_REQUEST_H_P__
3 #define __UDP_REQUEST_H_P__ 1
5 #include <sys/types.h>
7 #include <stdint.h>
9 #include <event2/event.h>
11 #include "dnscrypt.h"
12 #include "queue.h"
14 typedef struct UDPRequestStatus_ {
15 _Bool is_dying : 1;
16 _Bool is_in_queue : 1;
17 } UDPRequestStatus;
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 *timeout_timer;
25 evutil_socket_t client_proxy_handle;
26 ev_socklen_t client_sockaddr_len;
27 UDPRequestStatus status;
28 unsigned char retries;
29 } UDPRequest;
31 typedef struct SendtoWithRetryCtx_ {
32 void (*cb) (UDPRequest *udp_request);
33 const void *buffer;
34 UDPRequest *udp_request;
35 const struct sockaddr *dest_addr;
36 evutil_socket_t handle;
37 size_t length;
38 ev_socklen_t dest_len;
39 int flags;
40 } SendtoWithRetryCtx;
42 #endif