typedef struct dnsdist_ffi_servers_list_t dnsdist_ffi_servers_list_t;
typedef struct dnsdist_ffi_server_t dnsdist_ffi_server_t;
-typedef struct dnsdist_ednsoption {
+typedef struct dnsdist_ffi_ednsoption {
uint16_t optionCode;
uint16_t len;
const void* data;
-} dnsdist_ednsoption_t;
+} dnsdist_ffi_ednsoption_t;
-typedef struct dnsdist_http_header {
+typedef struct dnsdist_ffi_http_header {
const char* name;
const char* value;
-} dnsdist_http_header_t;
+} dnsdist_ffi_http_header_t;
-typedef struct dnsdist_tag {
+typedef struct dnsdist_ffi_tag {
const char* name;
const char* value;
-} dnsdist_tag_t;
+} dnsdist_ffi_tag_t;
+
void dnsdist_ffi_dnsquestion_get_localaddr(const dnsdist_ffi_dnsquestion_t* dq, const void** addr, size_t* addrSize) __attribute__ ((visibility ("default")));
uint16_t dnsdist_ffi_dnsquestion_get_local_port(const dnsdist_ffi_dnsquestion_t* dq) __attribute__ ((visibility ("default")));
const char* dnsdist_ffi_dnsquestion_get_http_scheme(dnsdist_ffi_dnsquestion_t* dq) __attribute__ ((visibility ("default")));
// returns the length of the resulting 'out' array. 'out' is not set if the length is 0
-size_t dnsdist_ffi_dnsquestion_get_edns_options(dnsdist_ffi_dnsquestion_t* ref, const dnsdist_ednsoption_t** out) __attribute__ ((visibility ("default")));
-size_t dnsdist_ffi_dnsquestion_get_http_headers(dnsdist_ffi_dnsquestion_t* ref, const dnsdist_http_header_t** out) __attribute__ ((visibility ("default")));
-size_t dnsdist_ffi_dnsquestion_get_tag_array(dnsdist_ffi_dnsquestion_t* ref, const dnsdist_tag_t** out) __attribute__ ((visibility ("default")));
+size_t dnsdist_ffi_dnsquestion_get_edns_options(dnsdist_ffi_dnsquestion_t* ref, const dnsdist_ffi_ednsoption_t** out) __attribute__ ((visibility ("default")));
+size_t dnsdist_ffi_dnsquestion_get_http_headers(dnsdist_ffi_dnsquestion_t* ref, const dnsdist_ffi_http_header_t** out) __attribute__ ((visibility ("default")));
+size_t dnsdist_ffi_dnsquestion_get_tag_array(dnsdist_ffi_dnsquestion_t* ref, const dnsdist_ffi_tag_t** out) __attribute__ ((visibility ("default")));
void dnsdist_ffi_dnsquestion_set_result(dnsdist_ffi_dnsquestion_t* dq, const char* str, size_t strSize) __attribute__ ((visibility ("default")));
void dnsdist_ffi_dnsquestion_set_rcode(dnsdist_ffi_dnsquestion_t* dq, int rcode) __attribute__ ((visibility ("default")));
return nullptr;
}
-static void fill_edns_option(const EDNSOptionViewValue& value, dnsdist_ednsoption_t& option)
+static void fill_edns_option(const EDNSOptionViewValue& value, dnsdist_ffi_ednsoption_t& option)
{
option.len = value.size;
option.data = nullptr;
}
// returns the length of the resulting 'out' array. 'out' is not set if the length is 0
-size_t dnsdist_ffi_dnsquestion_get_edns_options(dnsdist_ffi_dnsquestion_t* dq, const dnsdist_ednsoption_t** out)
+size_t dnsdist_ffi_dnsquestion_get_edns_options(dnsdist_ffi_dnsquestion_t* dq, const dnsdist_ffi_ednsoption_t** out)
{
if (dq->dq->ednsOptions == nullptr) {
parseEDNSOptions(*(dq->dq));
return totalCount;
}
-size_t dnsdist_ffi_dnsquestion_get_http_headers(dnsdist_ffi_dnsquestion_t* dq, const dnsdist_http_header_t** out)
+size_t dnsdist_ffi_dnsquestion_get_http_headers(dnsdist_ffi_dnsquestion_t* dq, const dnsdist_ffi_http_header_t** out)
{
if (dq->dq->du == nullptr) {
return 0;
#endif
}
-size_t dnsdist_ffi_dnsquestion_get_tag_array(dnsdist_ffi_dnsquestion_t* dq, const dnsdist_tag_t** out)
+size_t dnsdist_ffi_dnsquestion_get_tag_array(dnsdist_ffi_dnsquestion_t* dq, const dnsdist_ffi_tag_t** out)
{
if (dq->dq->qTag == nullptr || dq->dq->qTag->size() == 0) {
return 0;
}
DNSQuestion* dq{nullptr};
- std::vector<dnsdist_ednsoption_t> ednsOptionsVect;
- std::vector<dnsdist_http_header_t> httpHeadersVect;
- std::vector<dnsdist_tag_t> tagsVect;
+ std::vector<dnsdist_ffi_ednsoption_t> ednsOptionsVect;
+ std::vector<dnsdist_ffi_http_header_t> httpHeadersVect;
+ std::vector<dnsdist_ffi_tag_t> tagsVect;
std::unordered_map<std::string, std::string> httpHeaders;
std::string trailingData;
ComboAddress maskedRemote;
local query_string = ffi.string(ffi.C.dnsdist_ffi_dnsquestion_get_http_query_string(dq))
if scheme == 'https' and host == '%s:%d' and path == '/' and query_string == '' then
local foundct = false
- local headers_ptr = ffi.new("const dnsdist_http_header_t *[1]")
- local headers_ptr_param = ffi.cast("const dnsdist_http_header_t **", headers_ptr)
+ local headers_ptr = ffi.new("const dnsdist_ffi_http_header_t *[1]")
+ local headers_ptr_param = ffi.cast("const dnsdist_ffi_http_header_t **", headers_ptr)
local headers_count = tonumber(ffi.C.dnsdist_ffi_dnsquestion_get_http_headers(dq, headers_ptr_param))
if headers_count > 0 then
local ffi = require("ffi")
function testEDNSOptions(dq)
- local options_ptr = ffi.new("const dnsdist_ednsoption_t *[1]")
- local ret_ptr_param = ffi.cast("const dnsdist_ednsoption_t **", options_ptr)
+ local options_ptr = ffi.new("const dnsdist_ffi_ednsoption_t *[1]")
+ local ret_ptr_param = ffi.cast("const dnsdist_ffi_ednsoption_t **", options_ptr)
local options_count = tonumber(ffi.C.dnsdist_ffi_dnsquestion_get_edns_options(dq, ret_ptr_param))