dnscrypt-proxy plugin API
 All Classes Files Functions Typedefs Enumerations Macros
plugin.h
Go to the documentation of this file.
1 
2 #ifndef __DNSCRYPT_PLUGIN_H__
3 #define __DNSCRYPT_PLUGIN_H__ 1
4 
26 #include <assert.h>
27 #include <string.h>
28 
29 #include <dnscrypt/private.h>
30 #include <dnscrypt/version.h>
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
43 #define DCPLUGIN_MAIN(ID) DCPLUGIN_MAIN_PRIVATE(ID)
44 
53 typedef struct DCPlugin_ DCPlugin;
54 
62 
82  DCP_SYNC_FILTER_RESULT_OK,
83  DCP_SYNC_FILTER_RESULT_DIRECT,
84  DCP_SYNC_FILTER_RESULT_KILL,
85  DCP_SYNC_FILTER_RESULT_ERROR,
86  DCP_SYNC_FILTER_RESULT_FATAL
88 
99 int dcplugin_init(DCPlugin *dcplugin, int argc, char *argv[]);
100 
107 int dcplugin_destroy(DCPlugin *dcplugin);
108 
115 const char *dcplugin_description(DCPlugin *dcplugin);
116 
123 const char *dcplugin_long_description(DCPlugin *dcplugin);
124 
136 dcplugin_sync_pre_filter(DCPlugin *dcplugin, DCPluginDNSPacket *dcp_packet);
137 
150 
157 #define dcplugin_get_user_data(P) ((P)->user_data)
158 
166 #define dcplugin_set_user_data(P, V) ((P)->user_data = (V))
167 
174 #define dcplugin_get_client_address(D) ((D)->client_sockaddr)
175 
182 #define dcplugin_get_client_address_len(D) ((D)->client_sockaddr_len)
183 
192 #define dcplugin_get_wire_data(D) ((D)->dns_packet)
193 
203 #define dcplugin_set_wire_data(D, V, L) do { \
204  dcplugin_set_wire_data_len((D), (L)); \
205  memcpy(dcplugin_get_wire_data(D), (V), (L)); \
206  } while(0)
207 
215 #define dcplugin_get_wire_data_len(D) (*((D)->dns_packet_len_p))
216 
225 #define dcplugin_set_wire_data_len(D, L) do { \
226  assert(dcplugin_get_wire_data_max_len(D) >= (L)); \
227  (*((D)->dns_packet_len_p)) = (L); \
228  } while(0)
229 
238 #define dcplugin_get_wire_data_max_len(D) ((D)->dns_packet_max_len)
239 
240 #ifdef __cplusplus
241 }
242 #endif
243 
244 #endif