From 0d3327f4115786bb71373d52b31573175ac206cf Mon Sep 17 00:00:00 2001 From: Willem Toorop <willem@nlnetlabs.nl> Date: Wed, 19 Feb 2014 15:09:44 +0100 Subject: [PATCH] [API 0.400] Typedeffed the structs away --- spec/example-all-functions.c | 16 +- spec/example-reverse.c | 24 +-- spec/example-simple-answers.c | 12 +- spec/example-synchronous.c | 12 +- spec/example-tree.c | 20 +- spec/getdns-0.399.tgz | Bin 39280 -> 0 bytes spec/getdns-0.400.tgz | Bin 0 -> 39228 bytes spec/getdns_core_only.c | 186 ++++++++--------- spec/getdns_core_only.h | 300 +++++++++++++-------------- spec/getdns_libevent.h | 4 +- spec/index.html | 374 +++++++++++++++++----------------- 11 files changed, 474 insertions(+), 474 deletions(-) delete mode 100644 spec/getdns-0.399.tgz create mode 100644 spec/getdns-0.400.tgz diff --git a/spec/example-all-functions.c b/spec/example-all-functions.c index 598fec14..632bd4de 100644 --- a/spec/example-all-functions.c +++ b/spec/example-all-functions.c @@ -27,16 +27,16 @@ getdns_transport_t transportarg; getdns_append_name_t appendnamearg; getdns_data_type * datatypeptrarg; -struct getdns_bindata ** bindataptrarg; -struct getdns_dict * dictarg; -struct getdns_bindata * bindataarg; -struct getdns_list * listarg; -struct getdns_dict ** dictptrarg; -struct getdns_list ** listptrarg; +getdns_bindata ** bindataptrarg; +getdns_dict * dictarg; +getdns_bindata * bindataarg; +getdns_list * listarg; +getdns_dict ** dictptrarg; +getdns_list ** listptrarg; size_t sizetarg; size_t * sizetptrarg; -struct getdns_context *contextarg = NULL; +getdns_context *contextarg = NULL; uint8_t uint8arg; uint16_t uint16arg; uint32_t uint32arg; @@ -55,7 +55,7 @@ void * extendedreallocfunctionarg(void* userarg, void* foo, size_t bar) {UNUSED_PARAM(userarg); UNUSED_PARAM(foo); UNUSED_PARAM(bar); return NULL; } void extendeddeallocfunctionarg(void* userarg, void* foo) {UNUSED_PARAM(userarg); UNUSED_PARAM(foo);} -void setcallbackfunctionarg(struct getdns_context *foo1, getdns_context_code_t foo2) +void setcallbackfunctionarg(getdns_context *foo1, getdns_context_code_t foo2) {UNUSED_PARAM(foo1);UNUSED_PARAM(foo2);} int main() diff --git a/spec/example-reverse.c b/spec/example-reverse.c index de1a58da..4f5c7751 100644 --- a/spec/example-reverse.c +++ b/spec/example-reverse.c @@ -8,9 +8,9 @@ #define UNUSED_PARAM(x) ((void)(x)) /* Set up the callback function, which will also do the processing of the results */ -void this_callbackfn(struct getdns_context *this_context, +void this_callbackfn(getdns_context *this_context, uint16_t this_callback_type, - struct getdns_dict *this_response, + getdns_dict *this_response, void *this_userarg, getdns_transaction_t this_transaction_id) { @@ -29,34 +29,34 @@ void this_callbackfn(struct getdns_context *this_context, getdns_dict_destroy(this_response); return; } - struct getdns_list *replies_tree; + getdns_list *replies_tree; this_ret = getdns_dict_get_list(this_response, "replies_tree", &replies_tree); // Ignore any error size_t num_replies; this_ret = getdns_list_get_length(replies_tree, &num_replies); // Ignore any error /* Go through each reply */ for ( size_t reply_count = 0; reply_count < num_replies; ++reply_count) { - struct getdns_dict * this_reply; + getdns_dict * this_reply; this_ret = getdns_list_get_dict(replies_tree, reply_count, &this_reply); // Ignore any error /* Just print the address */ - struct getdns_list* reply_answers; + getdns_list* reply_answers; this_ret = getdns_dict_get_list(this_reply, "answer", &reply_answers); // Ignore any error size_t num_answers; this_ret = getdns_list_get_length(reply_answers, &num_answers); // Ignore any error /* Go through each answer */ for ( size_t answer_count = 0; answer_count < num_answers; ++answer_count) { - struct getdns_dict * this_rr; + getdns_dict * this_rr; this_ret = getdns_list_get_dict(reply_answers, answer_count, &this_rr); /* Get the RDATA type */ uint32_t this_type; this_ret = getdns_dict_get_int(this_rr, "type", &this_type); // Ignore any error if (this_type == GETDNS_RRTYPE_PTR) { - struct getdns_dict *this_rdata; + getdns_dict *this_rdata; this_ret = getdns_dict_get_dict(this_rr, "rdata", &this_rdata); // Ignore any error - struct getdns_bindata * this_dname; + getdns_bindata * this_dname; this_ret = getdns_dict_get_bindata(this_rdata, "rdata_raw", &this_dname); char *this_dname_str = getdns_convert_dns_name_to_fqdn((char *)this_dname->data); printf("The dname is %s\n", this_dname_str); @@ -77,7 +77,7 @@ void this_callbackfn(struct getdns_context *this_context, int main() { /* Create the DNS context for this call */ - struct getdns_context *this_context = NULL; + getdns_context *this_context = NULL; getdns_return_t context_create_return = getdns_context_create(&this_context, 1); if (context_create_return != GETDNS_RETURN_GOOD) { @@ -95,12 +95,12 @@ int main() } (void)getdns_extension_set_libevent_base(this_context, this_event_base); /* Set up the getdns call */ - struct getdns_dict * this_addr_to_look_up = getdns_dict_create(); + getdns_dict * this_addr_to_look_up = getdns_dict_create(); // TODO: check the return value above - struct getdns_bindata this_type = { 4, (void *)"IPv4" }; + getdns_bindata this_type = { 4, (void *)"IPv4" }; getdns_return_t this_ret = getdns_dict_set_bindata(this_addr_to_look_up, "address_type", &this_type); UNUSED_PARAM(this_ret); - struct getdns_bindata this_ipv4_addr = { 4, (void *)"\x08\x08\x08\x08" }; + getdns_bindata this_ipv4_addr = { 4, (void *)"\x08\x08\x08\x08" }; this_ret = getdns_dict_set_bindata(this_addr_to_look_up, "address_data", &this_ipv4_addr); char* this_userarg = "somestring"; // Could add things here to help identify this call getdns_transaction_t this_transaction_id = 0; diff --git a/spec/example-simple-answers.c b/spec/example-simple-answers.c index 8c0b446d..1866543c 100644 --- a/spec/example-simple-answers.c +++ b/spec/example-simple-answers.c @@ -8,9 +8,9 @@ #define UNUSED_PARAM(x) ((void)(x)) /* Set up the callback function, which will also do the processing of the results */ -void this_callbackfn(struct getdns_context *this_context, +void this_callbackfn(getdns_context *this_context, getdns_callback_type_t this_callback_type, - struct getdns_dict *this_response, + getdns_dict *this_response, void *this_userarg, getdns_transaction_t this_transaction_id) { @@ -28,7 +28,7 @@ void this_callbackfn(struct getdns_context *this_context, getdns_dict_destroy(this_response); return; } - struct getdns_list * just_the_addresses_ptr; + getdns_list * just_the_addresses_ptr; this_ret = getdns_dict_get_list(this_response, "just_address_answers", &just_the_addresses_ptr); if (this_ret != GETDNS_RETURN_GOOD) // This check is really not needed, but prevents a compiler error under "pedantic" { @@ -41,10 +41,10 @@ void this_callbackfn(struct getdns_context *this_context, /* Go through each record */ for ( size_t rec_count = 0; rec_count < num_addresses; ++rec_count ) { - struct getdns_dict * this_address; + getdns_dict * this_address; this_ret = getdns_list_get_dict(just_the_addresses_ptr, rec_count, &this_address); // Ignore any error /* Just print the address */ - struct getdns_bindata * this_address_data; + getdns_bindata * this_address_data; this_ret = getdns_dict_get_bindata(this_address, "address_data", &this_address_data); // Ignore any error char *this_address_str = getdns_display_ip_address(this_address_data); printf("The address is %s\n", this_address_str); @@ -61,7 +61,7 @@ void this_callbackfn(struct getdns_context *this_context, int main() { /* Create the DNS context for this call */ - struct getdns_context *this_context = NULL; + getdns_context *this_context = NULL; getdns_return_t context_create_return = getdns_context_create(&this_context, 1); if (context_create_return != GETDNS_RETURN_GOOD) { diff --git a/spec/example-synchronous.c b/spec/example-synchronous.c index 463a7e61..4095388b 100644 --- a/spec/example-synchronous.c +++ b/spec/example-synchronous.c @@ -9,7 +9,7 @@ int main() { getdns_return_t this_ret; /* Holder for all function returns */ /* Create the DNS context for this call */ - struct getdns_context *this_context = NULL; + getdns_context *this_context = NULL; getdns_return_t context_create_return = getdns_context_create(&this_context, 1); if (context_create_return != GETDNS_RETURN_GOOD) { @@ -20,7 +20,7 @@ int main() const char * this_name = "www.example.com"; uint8_t this_request_type = GETDNS_RRTYPE_A; /* Get the A and AAAA records */ - struct getdns_dict * this_extensions = getdns_dict_create(); + getdns_dict * this_extensions = getdns_dict_create(); this_ret = getdns_dict_set_int(this_extensions, "return_both_v4_and_v6", GETDNS_EXTENSION_TRUE); if (this_ret != GETDNS_RETURN_GOOD) { @@ -29,7 +29,7 @@ int main() getdns_context_destroy(this_context); return(GETDNS_RETURN_GENERIC_ERROR); } - struct getdns_dict * this_response = NULL; + getdns_dict * this_response = NULL; /* Make the call */ getdns_return_t dns_request_return = getdns_general_sync(this_context, this_name, this_request_type, @@ -55,17 +55,17 @@ int main() getdns_context_destroy(this_context); return(GETDNS_RETURN_GENERIC_ERROR); } - struct getdns_list * just_the_addresses_ptr; + getdns_list * just_the_addresses_ptr; this_ret = getdns_dict_get_list(this_response, "just_address_answers", &just_the_addresses_ptr); // Ignore any error size_t num_addresses; this_ret = getdns_list_get_length(just_the_addresses_ptr, &num_addresses); // Ignore any error /* Go through each record */ for ( size_t rec_count = 0; rec_count < num_addresses; ++rec_count ) { - struct getdns_dict * this_address; + getdns_dict * this_address; this_ret = getdns_list_get_dict(just_the_addresses_ptr, rec_count, &this_address); // Ignore any error /* Just print the address */ - struct getdns_bindata * this_address_data; + getdns_bindata * this_address_data; this_ret = getdns_dict_get_bindata(this_address, "address_data", &this_address_data); // Ignore any error char *this_address_str = getdns_display_ip_address(this_address_data); printf("The address is %s\n", this_address_str); diff --git a/spec/example-tree.c b/spec/example-tree.c index 485b0d7d..f815baee 100644 --- a/spec/example-tree.c +++ b/spec/example-tree.c @@ -8,9 +8,9 @@ #define UNUSED_PARAM(x) ((void)(x)) /* Set up the callback function, which will also do the processing of the results */ -void this_callbackfn(struct getdns_context *this_context, +void this_callbackfn(getdns_context *this_context, getdns_callback_type_t this_callback_type, - struct getdns_dict *this_response, + getdns_dict *this_response, void *this_userarg, getdns_transaction_t this_transaction_id) { @@ -29,7 +29,7 @@ void this_callbackfn(struct getdns_context *this_context, return; } /* Find all the answers returned */ - struct getdns_list * these_answers; + getdns_list * these_answers; this_ret = getdns_dict_get_list(this_response, "replies_tree", &these_answers); if (this_ret == GETDNS_RETURN_NO_SUCH_DICT_NAME) { @@ -42,20 +42,20 @@ void this_callbackfn(struct getdns_context *this_context, /* Go through each answer */ for ( size_t rec_count = 0; rec_count < num_answers; ++rec_count ) { - struct getdns_dict * this_record; + getdns_dict * this_record; this_ret = getdns_list_get_dict(these_answers, rec_count, &this_record); // Ignore any error /* Get the answer section */ - struct getdns_list * this_answer; + getdns_list * this_answer; this_ret = getdns_dict_get_list(this_record, "answer", &this_answer); // Ignore any error /* Get each RR in the answer section */ size_t num_rrs; this_ret = getdns_list_get_length(this_answer, &num_rrs); for ( size_t rr_count = 0; rr_count < num_rrs; ++rr_count ) { - struct getdns_dict *this_rr = NULL; + getdns_dict *this_rr = NULL; this_ret = getdns_list_get_dict(this_answer, rr_count, &this_rr); // Ignore any error /* Get the RDATA */ - struct getdns_dict * this_rdata = NULL; + getdns_dict * this_rdata = NULL; this_ret = getdns_dict_get_dict(this_rr, "rdata", &this_rdata); // Ignore any error /* Get the RDATA type */ uint32_t this_type; @@ -63,7 +63,7 @@ void this_callbackfn(struct getdns_context *this_context, /* If it is type A or AAAA, print the value */ if (this_type == GETDNS_RRTYPE_A) { - struct getdns_bindata * this_a_record = NULL; + getdns_bindata * this_a_record = NULL; this_ret = getdns_dict_get_bindata(this_rdata, "ipv4_address", &this_a_record); if (this_ret == GETDNS_RETURN_NO_SUCH_DICT_NAME) { @@ -78,7 +78,7 @@ void this_callbackfn(struct getdns_context *this_context, } else if (this_type == GETDNS_RRTYPE_AAAA) { - struct getdns_bindata * this_aaaa_record = NULL; + getdns_bindata * this_aaaa_record = NULL; this_ret = getdns_dict_get_bindata(this_rdata, "ipv6_address", &this_aaaa_record); if (this_ret == GETDNS_RETURN_NO_SUCH_DICT_NAME) { @@ -104,7 +104,7 @@ void this_callbackfn(struct getdns_context *this_context, int main() { /* Create the DNS context for this call */ - struct getdns_context *this_context = NULL; + getdns_context *this_context = NULL; getdns_return_t context_create_return = getdns_context_create(&this_context, 1); if (context_create_return != GETDNS_RETURN_GOOD) { diff --git a/spec/getdns-0.399.tgz b/spec/getdns-0.399.tgz deleted file mode 100644 index 60f6d493281f4c1a521dde546378ed122f9f97a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39280 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 QyF{VOpQryp`-h44KNu;`fB*mh diff --git a/spec/getdns-0.400.tgz b/spec/getdns-0.400.tgz new file mode 100644 index 0000000000000000000000000000000000000000..682db34509955e34e6f2c5787f4320b9a4532b8a GIT binary patch literal 39228 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 literal 0 HcmV?d00001 diff --git a/spec/getdns_core_only.c b/spec/getdns_core_only.c index c86b4425..ca69a26e 100644 --- a/spec/getdns_core_only.c +++ b/spec/getdns_core_only.c @@ -9,10 +9,10 @@ int main(){ return(0); } getdns_return_t getdns_general( - struct getdns_context *context, + getdns_context *context, const char *name, uint16_t request_type, - struct getdns_dict *extensions, + getdns_dict *extensions, void *userarg, getdns_transaction_t *transaction_id, getdns_callback_t callback @@ -22,9 +22,9 @@ UNUSED_PARAM(transaction_id); UNUSED_PARAM(callback); return GETDNS_RETURN_GOOD; getdns_return_t getdns_address( - struct getdns_context *context, + getdns_context *context, const char *name, - struct getdns_dict *extensions, + getdns_dict *extensions, void *userarg, getdns_transaction_t *transaction_id, getdns_callback_t callback @@ -34,9 +34,9 @@ UNUSED_PARAM(transaction_id); UNUSED_PARAM(callback); return GETDNS_RETURN_GOOD; getdns_return_t getdns_hostname( - struct getdns_context *context, - struct getdns_dict *address, - struct getdns_dict *extensions, + getdns_context *context, + getdns_dict *address, + getdns_dict *extensions, void *userarg, getdns_transaction_t *transaction_id, getdns_callback_t callback @@ -46,9 +46,9 @@ UNUSED_PARAM(transaction_id); UNUSED_PARAM(callback); return GETDNS_RETURN_GOOD; getdns_return_t getdns_service( - struct getdns_context *context, + getdns_context *context, const char *name, - struct getdns_dict *extensions, + getdns_dict *extensions, void *userarg, getdns_transaction_t *transaction_id, getdns_callback_t callback @@ -58,14 +58,14 @@ UNUSED_PARAM(transaction_id); UNUSED_PARAM(callback); return GETDNS_RETURN_GOOD; getdns_return_t getdns_context_create( - struct getdns_context **context, + getdns_context **context, int set_from_os ) { UNUSED_PARAM(context); UNUSED_PARAM(set_from_os); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_create_with_memory_functions( - struct getdns_context **context, + getdns_context **context, int set_from_os, void *(*malloc)(size_t), void *(*realloc)(void *, size_t), @@ -77,7 +77,7 @@ getdns_context_create_with_memory_functions( getdns_return_t getdns_context_create_with_extended_memory_functions( - struct getdns_context **context, + getdns_context **context, int set_from_os, void *userarg, void *(*malloc)(void *userarg, size_t), @@ -90,109 +90,109 @@ getdns_context_create_with_extended_memory_functions( void getdns_context_destroy( - struct getdns_context *context + getdns_context *context ) { UNUSED_PARAM(context); } getdns_return_t getdns_cancel_callback( - struct getdns_context *context, + getdns_context *context, getdns_transaction_t transaction_id ) { UNUSED_PARAM(context); UNUSED_PARAM(transaction_id); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_general_sync( - struct getdns_context *context, + getdns_context *context, const char *name, uint16_t request_type, - struct getdns_dict *extensions, - struct getdns_dict **response + getdns_dict *extensions, + getdns_dict **response ) { UNUSED_PARAM(context); UNUSED_PARAM(name); UNUSED_PARAM(request_type); UNUSED_PARAM(extensions); UNUSED_PARAM(response); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_address_sync( - struct getdns_context *context, + getdns_context *context, const char *name, - struct getdns_dict *extensions, - struct getdns_dict **response + getdns_dict *extensions, + getdns_dict **response ) { UNUSED_PARAM(context); UNUSED_PARAM(name); UNUSED_PARAM(extensions); UNUSED_PARAM(response); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_hostname_sync( - struct getdns_context *context, - struct getdns_dict *address, - struct getdns_dict *extensions, - struct getdns_dict **response + getdns_context *context, + getdns_dict *address, + getdns_dict *extensions, + getdns_dict **response ) { UNUSED_PARAM(context); UNUSED_PARAM(address); UNUSED_PARAM(extensions); UNUSED_PARAM(response); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_service_sync( - struct getdns_context *context, + getdns_context *context, const char *name, - struct getdns_dict *extensions, - struct getdns_dict **response + getdns_dict *extensions, + getdns_dict **response ) { UNUSED_PARAM(context); UNUSED_PARAM(name); UNUSED_PARAM(extensions); UNUSED_PARAM(response); return GETDNS_RETURN_GOOD; } void getdns_free_sync_request_memory( - struct getdns_dict *response + getdns_dict *response ) { UNUSED_PARAM(response); } -getdns_return_t getdns_list_get_length(const struct getdns_list *this_list, size_t *answer) +getdns_return_t getdns_list_get_length(const getdns_list *this_list, size_t *answer) { UNUSED_PARAM(this_list); UNUSED_PARAM(answer); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_list_get_data_type(const struct getdns_list *this_list, size_t index, getdns_data_type *answer) +getdns_return_t getdns_list_get_data_type(const getdns_list *this_list, size_t index, getdns_data_type *answer) { UNUSED_PARAM(this_list); UNUSED_PARAM(index); UNUSED_PARAM(answer); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_list_get_dict(const struct getdns_list *this_list, size_t index, struct getdns_dict **answer) +getdns_return_t getdns_list_get_dict(const getdns_list *this_list, size_t index, getdns_dict **answer) { UNUSED_PARAM(this_list); UNUSED_PARAM(index); UNUSED_PARAM(answer); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_list_get_list(const struct getdns_list *this_list, size_t index, struct getdns_list **answer) +getdns_return_t getdns_list_get_list(const getdns_list *this_list, size_t index, getdns_list **answer) { UNUSED_PARAM(this_list); UNUSED_PARAM(index); UNUSED_PARAM(answer); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_list_get_bindata(const struct getdns_list *this_list, size_t index, struct getdns_bindata **answer) +getdns_return_t getdns_list_get_bindata(const getdns_list *this_list, size_t index, getdns_bindata **answer) { UNUSED_PARAM(this_list); UNUSED_PARAM(index); UNUSED_PARAM(answer); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_list_get_int(const struct getdns_list *this_list, size_t index, uint32_t *answer) +getdns_return_t getdns_list_get_int(const getdns_list *this_list, size_t index, uint32_t *answer) { UNUSED_PARAM(this_list); UNUSED_PARAM(index); UNUSED_PARAM(answer); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_dict_get_names(const struct getdns_dict *this_dict, struct getdns_list **answer) +getdns_return_t getdns_dict_get_names(const getdns_dict *this_dict, getdns_list **answer) { UNUSED_PARAM(this_dict); UNUSED_PARAM(answer); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_dict_get_data_type(const struct getdns_dict *this_dict, const char *name, getdns_data_type *answer) +getdns_return_t getdns_dict_get_data_type(const getdns_dict *this_dict, const char *name, getdns_data_type *answer) { UNUSED_PARAM(this_dict); UNUSED_PARAM(name); UNUSED_PARAM(answer); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_dict_get_dict(const struct getdns_dict *this_dict, const char *name, struct getdns_dict **answer) +getdns_return_t getdns_dict_get_dict(const getdns_dict *this_dict, const char *name, getdns_dict **answer) { UNUSED_PARAM(this_dict); UNUSED_PARAM(name); UNUSED_PARAM(answer); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_dict_get_list(const struct getdns_dict *this_dict, const char *name, struct getdns_list **answer) +getdns_return_t getdns_dict_get_list(const getdns_dict *this_dict, const char *name, getdns_list **answer) { UNUSED_PARAM(this_dict); UNUSED_PARAM(name); UNUSED_PARAM(answer); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_dict_get_bindata(const struct getdns_dict *this_dict, const char *name, struct getdns_bindata **answer) +getdns_return_t getdns_dict_get_bindata(const getdns_dict *this_dict, const char *name, getdns_bindata **answer) { UNUSED_PARAM(this_dict); UNUSED_PARAM(name); UNUSED_PARAM(answer); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_dict_get_int(const struct getdns_dict *this_dict, const char *name, uint32_t *answer) +getdns_return_t getdns_dict_get_int(const getdns_dict *this_dict, const char *name, uint32_t *answer) { UNUSED_PARAM(this_dict); UNUSED_PARAM(name); UNUSED_PARAM(answer); return GETDNS_RETURN_GOOD; } -struct getdns_list * getdns_list_create() +getdns_list * getdns_list_create() { return NULL; } -struct getdns_list * getdns_list_create_with_context( - struct getdns_context *context +getdns_list * getdns_list_create_with_context( + getdns_context *context ) { UNUSED_PARAM(context); return NULL; } -struct getdns_list * getdns_list_create_with_memory_functions( +getdns_list * getdns_list_create_with_memory_functions( void *(*malloc)(size_t), void *(*realloc)(void *, size_t), void (*free)(void *) @@ -200,7 +200,7 @@ struct getdns_list * getdns_list_create_with_memory_functions( { UNUSED_PARAM(malloc); UNUSED_PARAM(realloc); UNUSED_PARAM(free); return NULL; } -struct getdns_list * getdns_list_create_with_extended_memory_functions( +getdns_list * getdns_list_create_with_extended_memory_functions( void *userarg, void *(*malloc)(void *userarg, size_t), void *(*realloc)(void *userarg, void *, size_t), @@ -210,30 +210,30 @@ struct getdns_list * getdns_list_create_with_extended_memory_functions( UNUSED_PARAM(malloc); UNUSED_PARAM(realloc); UNUSED_PARAM(free); return NULL; } -void getdns_list_destroy(struct getdns_list *this_list) +void getdns_list_destroy(getdns_list *this_list) { UNUSED_PARAM(this_list); } -getdns_return_t getdns_list_set_dict(struct getdns_list *this_list, size_t index, const struct getdns_dict *child_dict) +getdns_return_t getdns_list_set_dict(getdns_list *this_list, size_t index, const getdns_dict *child_dict) { UNUSED_PARAM(this_list); UNUSED_PARAM(index); UNUSED_PARAM(child_dict); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_list_set_list(struct getdns_list *this_list, size_t index, const struct getdns_list *child_list) +getdns_return_t getdns_list_set_list(getdns_list *this_list, size_t index, const getdns_list *child_list) { UNUSED_PARAM(this_list); UNUSED_PARAM(index); UNUSED_PARAM(child_list); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_list_set_bindata(struct getdns_list *this_list, size_t index, const struct getdns_bindata *child_bindata) +getdns_return_t getdns_list_set_bindata(getdns_list *this_list, size_t index, const getdns_bindata *child_bindata) { UNUSED_PARAM(this_list); UNUSED_PARAM(index); UNUSED_PARAM(child_bindata); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_list_set_int(struct getdns_list *this_list, size_t index, uint32_t child_uint32) +getdns_return_t getdns_list_set_int(getdns_list *this_list, size_t index, uint32_t child_uint32) { UNUSED_PARAM(this_list); UNUSED_PARAM(index); UNUSED_PARAM(child_uint32); return GETDNS_RETURN_GOOD; } -struct getdns_dict * getdns_dict_create() +getdns_dict * getdns_dict_create() { return NULL; } -struct getdns_dict * getdns_dict_create_with_context( - struct getdns_context *context +getdns_dict * getdns_dict_create_with_context( + getdns_context *context ) { UNUSED_PARAM(context); return NULL; } -struct getdns_dict * getdns_dict_create_with_memory_functions( +getdns_dict * getdns_dict_create_with_memory_functions( void *(*malloc)(size_t), void *(*realloc)(void *, size_t), void (*free)(void *) @@ -241,7 +241,7 @@ struct getdns_dict * getdns_dict_create_with_memory_functions( { UNUSED_PARAM(malloc); UNUSED_PARAM(realloc); UNUSED_PARAM(free); return NULL; } -struct getdns_dict * getdns_dict_create_with_extended_memory_functions( +getdns_dict * getdns_dict_create_with_extended_memory_functions( void *userarg, void *(*malloc)(void *userarg, size_t), void *(*realloc)(void *userarg, void *, size_t), @@ -251,27 +251,27 @@ struct getdns_dict * getdns_dict_create_with_extended_memory_functions( UNUSED_PARAM(malloc); UNUSED_PARAM(realloc); UNUSED_PARAM(free); return NULL; } -void getdns_dict_destroy(struct getdns_dict *this_dict) +void getdns_dict_destroy(getdns_dict *this_dict) { UNUSED_PARAM(this_dict); } -getdns_return_t getdns_dict_set_dict(struct getdns_dict *this_dict, const char *name, const struct getdns_dict *child_dict) +getdns_return_t getdns_dict_set_dict(getdns_dict *this_dict, const char *name, const getdns_dict *child_dict) { UNUSED_PARAM(this_dict); UNUSED_PARAM(name); UNUSED_PARAM(child_dict); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_dict_set_list(struct getdns_dict *this_dict, const char *name, const struct getdns_list *child_list) +getdns_return_t getdns_dict_set_list(getdns_dict *this_dict, const char *name, const getdns_list *child_list) { UNUSED_PARAM(this_dict); UNUSED_PARAM(name); UNUSED_PARAM(child_list); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_dict_set_bindata(struct getdns_dict *this_dict, const char *name, const struct getdns_bindata *child_bindata) +getdns_return_t getdns_dict_set_bindata(getdns_dict *this_dict, const char *name, const getdns_bindata *child_bindata) { UNUSED_PARAM(this_dict); UNUSED_PARAM(name); UNUSED_PARAM(child_bindata); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_dict_set_int(struct getdns_dict *this_dict, const char *name, uint32_t child_uint32) +getdns_return_t getdns_dict_set_int(getdns_dict *this_dict, const char *name, uint32_t child_uint32) { UNUSED_PARAM(this_dict); UNUSED_PARAM(name); UNUSED_PARAM(child_uint32); return GETDNS_RETURN_GOOD; } -getdns_return_t getdns_dict_remove_name(struct getdns_dict *this_dict, const char *name) +getdns_return_t getdns_dict_remove_name(getdns_dict *this_dict, const char *name) { UNUSED_PARAM(this_dict); UNUSED_PARAM(name); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_convert_dns_name_to_fqdn( - const struct getdns_bindata *dns_name_wire_fmt, + const getdns_bindata *dns_name_wire_fmt, char **fqdn_as_string ) { UNUSED_PARAM(dns_name_wire_fmt); UNUSED_PARAM(fqdn_as_string); return GETDNS_RETURN_GOOD; } @@ -279,7 +279,7 @@ getdns_convert_dns_name_to_fqdn( getdns_return_t getdns_convert_fqdn_to_dns_name( const char *fqdn_as_string, - struct getdns_bindata **dns_name_wire_fmt + getdns_bindata **dns_name_wire_fmt ) { UNUSED_PARAM(fqdn_as_string); UNUSED_PARAM(dns_name_wire_fmt); return GETDNS_RETURN_GOOD; } @@ -297,9 +297,9 @@ getdns_convert_alabel_to_ulabel( getdns_return_t getdns_validate_dnssec( - struct getdns_list *record_to_validate, - struct getdns_list *bundle_of_support_records, - struct getdns_list *trust_anchor_rdatas + getdns_list *record_to_validate, + getdns_list *bundle_of_support_records, + getdns_list *trust_anchor_rdatas ) { UNUSED_PARAM(record_to_validate); UNUSED_PARAM(bundle_of_support_records); UNUSED_PARAM(trust_anchor_rdatas); return GETDNS_RETURN_GOOD; } @@ -307,33 +307,33 @@ return GETDNS_RETURN_GOOD; } char * getdns_pretty_print_dict( - const struct getdns_dict *some_dict + const getdns_dict *some_dict ) { UNUSED_PARAM(some_dict); return NULL; } char * getdns_display_ip_address( - const struct getdns_bindata *bindata_of_ipv4_or_ipv6_address + const getdns_bindata *bindata_of_ipv4_or_ipv6_address ) { UNUSED_PARAM(bindata_of_ipv4_or_ipv6_address); return NULL; } getdns_return_t getdns_context_set_context_update_callback( - struct getdns_context *context, - void (*value)(struct getdns_context *context, getdns_context_code_t changed_item) + getdns_context *context, + void (*value)(getdns_context *context, getdns_context_code_t changed_item) ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_resolution_type( - struct getdns_context *context, + getdns_context *context, getdns_resolution_t value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_namespaces( - struct getdns_context *context, + getdns_context *context, size_t namespace_count, getdns_namespace_t *namespaces ) @@ -342,105 +342,105 @@ return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_dns_transport( - struct getdns_context *context, + getdns_context *context, getdns_transport_t value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_limit_outstanding_queries( - struct getdns_context *context, + getdns_context *context, uint16_t limit ) { UNUSED_PARAM(context); UNUSED_PARAM(limit); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_timeout( - struct getdns_context *context, + getdns_context *context, uint64_t timeout ) { UNUSED_PARAM(context); UNUSED_PARAM(timeout); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_follow_redirects( - struct getdns_context *context, + getdns_context *context, getdns_redirects_t value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_dns_root_servers( - struct getdns_context *context, - struct getdns_list *addresses + getdns_context *context, + getdns_list *addresses ) { UNUSED_PARAM(context); UNUSED_PARAM(addresses); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_append_name( - struct getdns_context *context, + getdns_context *context, getdns_append_name_t value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_suffix( - struct getdns_context *context, - struct getdns_list *value + getdns_context *context, + getdns_list *value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_dnssec_trust_anchors( - struct getdns_context *context, - struct getdns_list *value + getdns_context *context, + getdns_list *value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_dnssec_allowed_skew( - struct getdns_context *context, + getdns_context *context, unsigned int value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_upstream_recursive_servers( - struct getdns_context *context, - struct getdns_list *upstream_list + getdns_context *context, + getdns_list *upstream_list ) { UNUSED_PARAM(context); UNUSED_PARAM(upstream_list); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_edns_maximum_udp_payload_size( - struct getdns_context *context, + getdns_context *context, uint16_t value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_edns_extended_rcode( - struct getdns_context *context, + getdns_context *context, uint8_t value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_edns_version( - struct getdns_context *context, + getdns_context *context, uint8_t value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_edns_do_bit( - struct getdns_context *context, + getdns_context *context, uint8_t value ) { UNUSED_PARAM(context); UNUSED_PARAM(value); return GETDNS_RETURN_GOOD; } getdns_return_t getdns_context_set_memory_functions( - struct getdns_context *context, + getdns_context *context, void *(*malloc) (size_t), void *(*realloc) (void *, size_t), void (*free) (void *) @@ -451,7 +451,7 @@ getdns_context_set_memory_functions( getdns_return_t getdns_context_set_extended_memory_functions( - struct getdns_context *context, + getdns_context *context, void *userarg, void *(*malloc)(void *userarg, size_t sz), void *(*realloc)(void *userarg, void *ptr, size_t sz), @@ -464,7 +464,7 @@ getdns_context_set_extended_memory_functions( getdns_return_t getdns_extension_set_libevent_base( - struct getdns_context *context, + getdns_context *context, struct event_base *this_event_base ) { UNUSED_PARAM(context); UNUSED_PARAM(this_event_base); return GETDNS_RETURN_GOOD; } diff --git a/spec/getdns_core_only.h b/spec/getdns_core_only.h index 389dd753..9bcab902 100644 --- a/spec/getdns_core_only.h +++ b/spec/getdns_core_only.h @@ -1,4 +1,4 @@ -/* Created at 2014-02-19-10-58-16*/ +/* Created at 2014-02-19-15-06-22*/ #ifndef GETDNS_H #define GETDNS_H @@ -314,89 +314,89 @@ typedef enum getdns_callback_type_t { #define GETDNS_RCODE_BADTRUNC 22 /* Various typedefs */ -struct getdns_context; +typedef struct getdns_context getdns_context; typedef uint64_t getdns_transaction_t; typedef enum getdns_data_type { t_dict, t_list, t_int, t_bindata } getdns_data_type; -struct getdns_bindata { +typedef struct getdns_bindata { size_t size; uint8_t *data; -}; -struct getdns_dict; -struct getdns_list; +} getdns_bindata; +typedef struct getdns_dict getdns_dict; +typedef struct getdns_list getdns_list; /* Helper functions for data structures */ /* Lists: get the length, get the data_type of the value at a given position, and get the data at a given position */ -getdns_return_t getdns_list_get_length(const struct getdns_list *this_list, size_t *answer); -getdns_return_t getdns_list_get_data_type(const struct getdns_list *this_list, size_t index, getdns_data_type *answer); -getdns_return_t getdns_list_get_dict(const struct getdns_list *this_list, size_t index, struct getdns_dict **answer); -getdns_return_t getdns_list_get_list(const struct getdns_list *this_list, size_t index, struct getdns_list **answer); -getdns_return_t getdns_list_get_bindata(const struct getdns_list *this_list, size_t index, struct getdns_bindata **answer); -getdns_return_t getdns_list_get_int(const struct getdns_list *this_list, size_t index, uint32_t *answer); +getdns_return_t getdns_list_get_length(const getdns_list *this_list, size_t *answer); +getdns_return_t getdns_list_get_data_type(const getdns_list *this_list, size_t index, getdns_data_type *answer); +getdns_return_t getdns_list_get_dict(const getdns_list *this_list, size_t index, getdns_dict **answer); +getdns_return_t getdns_list_get_list(const getdns_list *this_list, size_t index, getdns_list **answer); +getdns_return_t getdns_list_get_bindata(const getdns_list *this_list, size_t index, getdns_bindata **answer); +getdns_return_t getdns_list_get_int(const getdns_list *this_list, size_t index, uint32_t *answer); /* Dicts: get the list of names, get the data_type of the value at a given name, and get the data at a given name */ -getdns_return_t getdns_dict_get_names(const struct getdns_dict *this_dict, struct getdns_list **answer); -getdns_return_t getdns_dict_get_data_type(const struct getdns_dict *this_dict, const char *name, getdns_data_type *answer); -getdns_return_t getdns_dict_get_dict(const struct getdns_dict *this_dict, const char *name, struct getdns_dict **answer); -getdns_return_t getdns_dict_get_list(const struct getdns_dict *this_dict, const char *name, struct getdns_list **answer); -getdns_return_t getdns_dict_get_bindata(const struct getdns_dict *this_dict, const char *name, struct getdns_bindata **answer); -getdns_return_t getdns_dict_get_int(const struct getdns_dict *this_dict, const char *name, uint32_t *answer); +getdns_return_t getdns_dict_get_names(const getdns_dict *this_dict, getdns_list **answer); +getdns_return_t getdns_dict_get_data_type(const getdns_dict *this_dict, const char *name, getdns_data_type *answer); +getdns_return_t getdns_dict_get_dict(const getdns_dict *this_dict, const char *name, getdns_dict **answer); +getdns_return_t getdns_dict_get_list(const getdns_dict *this_dict, const char *name, getdns_list **answer); +getdns_return_t getdns_dict_get_bindata(const getdns_dict *this_dict, const char *name, getdns_bindata **answer); +getdns_return_t getdns_dict_get_int(const getdns_dict *this_dict, const char *name, uint32_t *answer); /* Lists: create, destroy, and set the data at a given position */ -struct getdns_list * getdns_list_create(); -struct getdns_list * getdns_list_create_with_context( - struct getdns_context *context +getdns_list * getdns_list_create(); +getdns_list * getdns_list_create_with_context( + getdns_context *context ); -struct getdns_list * getdns_list_create_with_memory_functions( +getdns_list * getdns_list_create_with_memory_functions( void *(*malloc)(size_t), void *(*realloc)(void *, size_t), void (*free)(void *) ); -struct getdns_list * getdns_list_create_with_extended_memory_functions( +getdns_list * getdns_list_create_with_extended_memory_functions( void *userarg, void *(*malloc)(void *userarg, size_t), void *(*realloc)(void *userarg, void *, size_t), void (*free)(void *userarg, void *) ); -void getdns_list_destroy(struct getdns_list *this_list); -getdns_return_t getdns_list_set_dict(struct getdns_list *this_list, size_t index, const struct getdns_dict *child_dict); -getdns_return_t getdns_list_set_list(struct getdns_list *this_list, size_t index, const struct getdns_list *child_list); -getdns_return_t getdns_list_set_bindata(struct getdns_list *this_list, size_t index, const struct getdns_bindata *child_bindata); -getdns_return_t getdns_list_set_int(struct getdns_list *this_list, size_t index, uint32_t child_uint32); +void getdns_list_destroy(getdns_list *this_list); +getdns_return_t getdns_list_set_dict(getdns_list *this_list, size_t index, const getdns_dict *child_dict); +getdns_return_t getdns_list_set_list(getdns_list *this_list, size_t index, const getdns_list *child_list); +getdns_return_t getdns_list_set_bindata(getdns_list *this_list, size_t index, const getdns_bindata *child_bindata); +getdns_return_t getdns_list_set_int(getdns_list *this_list, size_t index, uint32_t child_uint32); /* Dicts: create, destroy, and set the data at a given name */ -struct getdns_dict * getdns_dict_create(); -struct getdns_dict * getdns_dict_create_with_context( - struct getdns_context *context +getdns_dict * getdns_dict_create(); +getdns_dict * getdns_dict_create_with_context( + getdns_context *context ); -struct getdns_dict * getdns_dict_create_with_memory_functions( +getdns_dict * getdns_dict_create_with_memory_functions( void *(*malloc)(size_t), void *(*realloc)(void *, size_t), void (*free)(void *) ); -struct getdns_dict * getdns_dict_create_with_extended_memory_functions( +getdns_dict * getdns_dict_create_with_extended_memory_functions( void *userarg, void *(*malloc)(void *userarg, size_t), void *(*realloc)(void *userarg, void *, size_t), void (*free)(void *userarg, void *) ); -void getdns_dict_destroy(struct getdns_dict *this_dict); -getdns_return_t getdns_dict_set_dict(struct getdns_dict *this_dict, const char *name, const struct getdns_dict *child_dict); -getdns_return_t getdns_dict_set_list(struct getdns_dict *this_dict, const char *name, const struct getdns_list *child_list); -getdns_return_t getdns_dict_set_bindata(struct getdns_dict *this_dict, const char *name, const struct getdns_bindata *child_bindata); -getdns_return_t getdns_dict_set_int(struct getdns_dict *this_dict, const char *name, uint32_t child_uint32); -getdns_return_t getdns_dict_remove_name(struct getdns_dict *this_dict, const char *name); +void getdns_dict_destroy(getdns_dict *this_dict); +getdns_return_t getdns_dict_set_dict(getdns_dict *this_dict, const char *name, const getdns_dict *child_dict); +getdns_return_t getdns_dict_set_list(getdns_dict *this_dict, const char *name, const getdns_list *child_list); +getdns_return_t getdns_dict_set_bindata(getdns_dict *this_dict, const char *name, const getdns_bindata *child_bindata); +getdns_return_t getdns_dict_set_int(getdns_dict *this_dict, const char *name, uint32_t child_uint32); +getdns_return_t getdns_dict_remove_name(getdns_dict *this_dict, const char *name); /* Callback arguments */ typedef void (*getdns_callback_t)( - struct getdns_context *context, + getdns_context *context, getdns_callback_type_t callback_type, - struct getdns_dict *response, + getdns_dict *response, void *userarg, getdns_transaction_t transaction_id); @@ -404,120 +404,120 @@ typedef void (*getdns_callback_t)( getdns_return_t getdns_general( - struct getdns_context *context, - const char *name, - uint16_t request_type, - struct getdns_dict *extensions, - void *userarg, - getdns_transaction_t *transaction_id, - getdns_callback_t callbackfn + getdns_context *context, + const char *name, + uint16_t request_type, + getdns_dict *extensions, + void *userarg, + getdns_transaction_t *transaction_id, + getdns_callback_t callbackfn ); getdns_return_t getdns_address( - struct getdns_context *context, - const char *name, - struct getdns_dict *extensions, - void *userarg, - getdns_transaction_t *transaction_id, - getdns_callback_t callbackfn + getdns_context *context, + const char *name, + getdns_dict *extensions, + void *userarg, + getdns_transaction_t *transaction_id, + getdns_callback_t callbackfn ); getdns_return_t getdns_hostname( - struct getdns_context *context, - struct getdns_dict *address, - struct getdns_dict *extensions, - void *userarg, - getdns_transaction_t *transaction_id, - getdns_callback_t callbackfn + getdns_context *context, + getdns_dict *address, + getdns_dict *extensions, + void *userarg, + getdns_transaction_t *transaction_id, + getdns_callback_t callbackfn ); getdns_return_t getdns_service( - struct getdns_context *context, - const char *name, - struct getdns_dict *extensions, - void *userarg, - getdns_transaction_t *transaction_id, - getdns_callback_t callbackfn + getdns_context *context, + const char *name, + getdns_dict *extensions, + void *userarg, + getdns_transaction_t *transaction_id, + getdns_callback_t callbackfn ); getdns_return_t getdns_context_create( - struct getdns_context **context, - int set_from_os + getdns_context **context, + int set_from_os ); getdns_return_t getdns_context_create_with_memory_functions( - struct getdns_context **context, - int set_from_os, - void *(*malloc)(size_t), - void *(*realloc)(void *, size_t), - void (*free)(void *) + getdns_context **context, + int set_from_os, + void *(*malloc)(size_t), + void *(*realloc)(void *, size_t), + void (*free)(void *) ); getdns_return_t getdns_context_create_with_extended_memory_functions( - struct getdns_context **context, - int set_from_os, - void *userarg, - void *(*malloc)(void *userarg, size_t), - void *(*realloc)(void *userarg, void *, size_t), - void (*free)(void *userarg, void *) + getdns_context **context, + int set_from_os, + void *userarg, + void *(*malloc)(void *userarg, size_t), + void *(*realloc)(void *userarg, void *, size_t), + void (*free)(void *userarg, void *) ); void getdns_context_destroy( - struct getdns_context *context + getdns_context *context ); getdns_return_t getdns_cancel_callback( - struct getdns_context *context, - getdns_transaction_t transaction_id + getdns_context *context, + getdns_transaction_t transaction_id ); getdns_return_t getdns_general_sync( - struct getdns_context *context, - const char *name, - uint16_t request_type, - struct getdns_dict *extensions, - struct getdns_dict **response + getdns_context *context, + const char *name, + uint16_t request_type, + getdns_dict *extensions, + getdns_dict **response ); getdns_return_t getdns_address_sync( - struct getdns_context *context, - const char *name, - struct getdns_dict *extensions, - struct getdns_dict **response + getdns_context *context, + const char *name, + getdns_dict *extensions, + getdns_dict **response ); getdns_return_t getdns_hostname_sync( - struct getdns_context *context, - struct getdns_dict *address, - struct getdns_dict *extensions, - struct getdns_dict **response + getdns_context *context, + getdns_dict *address, + getdns_dict *extensions, + getdns_dict **response ); getdns_return_t getdns_service_sync( - struct getdns_context *context, - const char *name, - struct getdns_dict *extensions, - struct getdns_dict **response + getdns_context *context, + const char *name, + getdns_dict *extensions, + getdns_dict **response ); getdns_return_t getdns_convert_dns_name_to_fqdn( - const struct getdns_bindata *dns_name_wire_fmt, + const getdns_bindata *dns_name_wire_fmt, char **fqdn_as_string ); getdns_return_t getdns_convert_fqdn_to_dns_name( const char *fqdn_as_string, - struct getdns_bindata **dns_name_wire_fmt + getdns_bindata **dns_name_wire_fmt ); char * @@ -532,139 +532,139 @@ getdns_convert_alabel_to_ulabel( getdns_return_t getdns_validate_dnssec( - struct getdns_list *record_to_validate, - struct getdns_list *bundle_of_support_records, - struct getdns_list *trust_anchor_rdatas + getdns_list *record_to_validate, + getdns_list *bundle_of_support_records, + getdns_list *trust_anchor_records ); char * getdns_pretty_print_dict( - const struct getdns_dict *some_dict + const getdns_dict *some_dict ); char * getdns_display_ip_address( - const struct getdns_bindata *bindata_of_ipv4_or_ipv6_address + const getdns_bindata *bindata_of_ipv4_or_ipv6_address ); getdns_return_t getdns_context_set_context_update_callback( - struct getdns_context *context, - void (*value)(struct getdns_context *context, getdns_context_code_t changed_item) + getdns_context *context, + void (*value)(getdns_context *context, getdns_context_code_t changed_item) ); getdns_return_t getdns_context_set_resolution_type( - struct getdns_context *context, - getdns_resolution_t value + getdns_context *context, + getdns_resolution_t value ); getdns_return_t getdns_context_set_namespaces( - struct getdns_context *context, - size_t namespace_count, - getdns_namespace_t *namespaces + getdns_context *context, + size_t namespace_count, + getdns_namespace_t *namespaces ); getdns_return_t getdns_context_set_dns_transport( - struct getdns_context *context, - getdns_transport_t value + getdns_context *context, + getdns_transport_t value ); getdns_return_t getdns_context_set_limit_outstanding_queries( - struct getdns_context *context, - uint16_t limit + getdns_context *context, + uint16_t limit ); getdns_return_t getdns_context_set_timeout( - struct getdns_context *context, - uint64_t timeout + getdns_context *context, + uint64_t timeout ); getdns_return_t getdns_context_set_follow_redirects( - struct getdns_context *context, - getdns_redirects_t value + getdns_context *context, + getdns_redirects_t value ); getdns_return_t getdns_context_set_dns_root_servers( - struct getdns_context *context, - struct getdns_list *addresses + getdns_context *context, + getdns_list *addresses ); getdns_return_t getdns_context_set_append_name( - struct getdns_context *context, - getdns_append_name_t value + getdns_context *context, + getdns_append_name_t value ); getdns_return_t getdns_context_set_suffix( - struct getdns_context *context, - struct getdns_list *value + getdns_context *context, + getdns_list *value ); getdns_return_t getdns_context_set_dnssec_trust_anchors( - struct getdns_context *context, - struct getdns_list *value + getdns_context *context, + getdns_list *value ); getdns_return_t getdns_context_set_dnssec_allowed_skew( - struct getdns_context *context, - uint32_t value + getdns_context *context, + uint32_t value ); getdns_return_t getdns_context_set_upstream_recursive_servers( - struct getdns_context *context, - struct getdns_list *upstream_list + getdns_context *context, + getdns_list *upstream_list ); getdns_return_t getdns_context_set_edns_maximum_udp_payload_size( - struct getdns_context *context, - uint16_t value + getdns_context *context, + uint16_t value ); getdns_return_t getdns_context_set_edns_extended_rcode( - struct getdns_context *context, - uint8_t value + getdns_context *context, + uint8_t value ); getdns_return_t getdns_context_set_edns_version( - struct getdns_context *context, - uint8_t value + getdns_context *context, + uint8_t value ); getdns_return_t getdns_context_set_edns_do_bit( - struct getdns_context *context, - uint8_t value + getdns_context *context, + uint8_t value ); getdns_return_t getdns_context_set_memory_functions( - struct getdns_context *context, - void *(*malloc) (size_t), - void *(*realloc) (void *, size_t), - void (*free) (void *) + getdns_context *context, + void *(*malloc) (size_t), + void *(*realloc) (void *, size_t), + void (*free) (void *) ); getdns_return_t getdns_context_set_extended_memory_functions( - struct getdns_context *context, - void *userarg, - void *(*malloc)(void *userarg, size_t sz), - void *(*realloc)(void *userarg, void *ptr, size_t sz), - void (*free)(void *userarg, void *ptr) + getdns_context *context, + void *userarg, + void *(*malloc)(void *userarg, size_t sz), + void *(*realloc)(void *userarg, void *ptr, size_t sz), + void (*free)(void *userarg, void *ptr) ); #ifdef __cplusplus diff --git a/spec/getdns_libevent.h b/spec/getdns_libevent.h index 1baa4395..70c3f9e1 100644 --- a/spec/getdns_libevent.h +++ b/spec/getdns_libevent.h @@ -4,6 +4,6 @@ /* For libevent, which we are using for these examples */ getdns_return_t getdns_extension_set_libevent_base( - struct getdns_context *context, - struct event_base *this_event_base + getdns_context *context, + struct event_base *this_event_base ); diff --git a/spec/index.html b/spec/index.html index 34e4327c..f03a6617 100644 --- a/spec/index.html +++ b/spec/index.html @@ -140,13 +140,13 @@ href="mailto:paul.hoffman@vpnc.org">paul.hoffman@vpnc.org</a>.)</p> <div class=forh id="getdnsfuncgeneral">getdns_return_t getdns_general( - struct getdns_context *context, - const char *name, - uint16_t request_type, - struct getdns_dict *extensions, - void *userarg, - getdns_transaction_t *transaction_id, - getdns_callback_t callbackfn + getdns_context *context, + const char *name, + uint16_t request_type, + getdns_dict *extensions, + void *userarg, + getdns_transaction_t *transaction_id, + getdns_callback_t callbackfn ); </div> @@ -208,12 +208,12 @@ href="#ReturnCodes">later in this document</a>.</p> <div class=forh id="getdnsfuncaddress">getdns_return_t getdns_address( - struct getdns_context *context, - const char *name, - struct getdns_dict *extensions, - void *userarg, - getdns_transaction_t *transaction_id, - getdns_callback_t callbackfn + getdns_context *context, + const char *name, + getdns_dict *extensions, + void *userarg, + getdns_transaction_t *transaction_id, + getdns_callback_t callbackfn ); </div> @@ -236,12 +236,12 @@ getdns_address( <div class=forh id="getdnsfunchostname">getdns_return_t getdns_hostname( - struct getdns_context *context, - struct getdns_dict *address, - struct getdns_dict *extensions, - void *userarg, - getdns_transaction_t *transaction_id, - getdns_callback_t callbackfn + getdns_context *context, + getdns_dict *address, + getdns_dict *extensions, + void *userarg, + getdns_transaction_t *transaction_id, + getdns_callback_t callbackfn ); </div> @@ -253,12 +253,12 @@ or "IPv6" (which are case-sensitive)) and <code>address_data</code> (whose value <div class=forh id="getdnsfuncservice">getdns_return_t getdns_service( - struct getdns_context *context, - const char *name, - struct getdns_dict *extensions, - void *userarg, - getdns_transaction_t *transaction_id, - getdns_callback_t callbackfn + getdns_context *context, + const char *name, + getdns_dict *extensions, + void *userarg, + getdns_transaction_t *transaction_id, + getdns_callback_t callbackfn ); </div> @@ -277,9 +277,9 @@ returned an error, in which case the callback function is never called.<p> as follows:</p> <div class=forh id="getdns_callback_t"> typedef void (*getdns_callback_t)( - struct getdns_context *context, + getdns_context *context, getdns_callback_type_t callback_type, - struct getdns_dict *response, + getdns_dict *response, void *userarg, getdns_transaction_t transaction_id); </div> @@ -324,8 +324,8 @@ that affect how DNS calls are made. For most applications, a default context is <div class=forh>getdns_return_t getdns_context_create( - struct getdns_context **context, - int set_from_os + getdns_context **context, + int set_from_os ); </div> @@ -335,20 +335,20 @@ want <code>set_from_os</code> set to <code>1</code>.</p> <div class=forh>getdns_return_t getdns_context_create_with_memory_functions( - struct getdns_context **context, - int set_from_os, - void *(*malloc)(size_t), - void *(*realloc)(void *, size_t), - void (*free)(void *) + getdns_context **context, + int set_from_os, + void *(*malloc)(size_t), + void *(*realloc)(void *, size_t), + void (*free)(void *) ); getdns_return_t getdns_context_create_with_extended_memory_functions( - struct getdns_context **context, - int set_from_os, - void *userarg, - void *(*malloc)(void *userarg, size_t), - void *(*realloc)(void *userarg, void *, size_t), - void (*free)(void *userarg, void *) + getdns_context **context, + int set_from_os, + void *userarg, + void *(*malloc)(void *userarg, size_t), + void *(*realloc)(void *userarg, void *, size_t), + void (*free)(void *userarg, void *) ); </div> @@ -357,7 +357,7 @@ using this context, use the function:</p> <div class=forh>void getdns_context_destroy( - struct getdns_context *context + getdns_context *context ); </div> @@ -374,8 +374,8 @@ all of the needed cleanup is done and callbacks are made.</p> <div class=forh>getdns_return_t getdns_cancel_callback( - struct getdns_context *context, - getdns_transaction_t transaction_id + getdns_context *context, + getdns_transaction_t transaction_id ); </div> @@ -455,38 +455,38 @@ same as the response returned in the callback if you had used the async version <div class=forh>getdns_return_t getdns_general_sync( - struct getdns_context *context, - const char *name, - uint16_t request_type, - struct getdns_dict *extensions, - struct getdns_dict **response + getdns_context *context, + const char *name, + uint16_t request_type, + getdns_dict *extensions, + getdns_dict **response ); </div> <div class=forh>getdns_return_t getdns_address_sync( - struct getdns_context *context, - const char *name, - struct getdns_dict *extensions, - struct getdns_dict **response + getdns_context *context, + const char *name, + getdns_dict *extensions, + getdns_dict **response ); </div> <div class=forh>getdns_return_t getdns_hostname_sync( - struct getdns_context *context, - struct getdns_dict *address, - struct getdns_dict *extensions, - struct getdns_dict **response + getdns_context *context, + getdns_dict *address, + getdns_dict *extensions, + getdns_dict **response ); </div> <div class=forh>getdns_return_t getdns_service_sync( - struct getdns_context *context, - const char *name, - struct getdns_dict *extensions, - struct getdns_dict **response + getdns_context *context, + const char *name, + getdns_dict *extensions, + getdns_dict **response ); </div> @@ -495,7 +495,7 @@ free the memory from its internal pool.</p> <pre>void getdns_dict_destroy( - struct getdns_dict *response + getdns_dict *response ); </pre> @@ -525,21 +525,21 @@ name-value pairs in a dict is not important.</li> <div class=forh id="datagetters"> /* Lists: get the length, get the data_type of the value at a given position, and get the data at a given position */ -getdns_return_t getdns_list_get_length(const struct getdns_list *this_list, size_t *answer); -getdns_return_t getdns_list_get_data_type(const struct getdns_list *this_list, size_t index, getdns_data_type *answer); -getdns_return_t getdns_list_get_dict(const struct getdns_list *this_list, size_t index, struct getdns_dict **answer); -getdns_return_t getdns_list_get_list(const struct getdns_list *this_list, size_t index, struct getdns_list **answer); -getdns_return_t getdns_list_get_bindata(const struct getdns_list *this_list, size_t index, struct getdns_bindata **answer); -getdns_return_t getdns_list_get_int(const struct getdns_list *this_list, size_t index, uint32_t *answer); +getdns_return_t getdns_list_get_length(const getdns_list *this_list, size_t *answer); +getdns_return_t getdns_list_get_data_type(const getdns_list *this_list, size_t index, getdns_data_type *answer); +getdns_return_t getdns_list_get_dict(const getdns_list *this_list, size_t index, getdns_dict **answer); +getdns_return_t getdns_list_get_list(const getdns_list *this_list, size_t index, getdns_list **answer); +getdns_return_t getdns_list_get_bindata(const getdns_list *this_list, size_t index, getdns_bindata **answer); +getdns_return_t getdns_list_get_int(const getdns_list *this_list, size_t index, uint32_t *answer); /* Dicts: get the list of names, get the data_type of the value at a given name, and get the data at a given name */ -getdns_return_t getdns_dict_get_names(const struct getdns_dict *this_dict, struct getdns_list **answer); -getdns_return_t getdns_dict_get_data_type(const struct getdns_dict *this_dict, const char *name, getdns_data_type *answer); -getdns_return_t getdns_dict_get_dict(const struct getdns_dict *this_dict, const char *name, struct getdns_dict **answer); -getdns_return_t getdns_dict_get_list(const struct getdns_dict *this_dict, const char *name, struct getdns_list **answer); -getdns_return_t getdns_dict_get_bindata(const struct getdns_dict *this_dict, const char *name, struct getdns_bindata **answer); -getdns_return_t getdns_dict_get_int(const struct getdns_dict *this_dict, const char *name, uint32_t *answer); +getdns_return_t getdns_dict_get_names(const getdns_dict *this_dict, getdns_list **answer); +getdns_return_t getdns_dict_get_data_type(const getdns_dict *this_dict, const char *name, getdns_data_type *answer); +getdns_return_t getdns_dict_get_dict(const getdns_dict *this_dict, const char *name, getdns_dict **answer); +getdns_return_t getdns_dict_get_list(const getdns_dict *this_dict, const char *name, getdns_list **answer); +getdns_return_t getdns_dict_get_bindata(const getdns_dict *this_dict, const char *name, getdns_bindata **answer); +getdns_return_t getdns_dict_get_int(const getdns_dict *this_dict, const char *name, uint32_t *answer); </div> <p>All of these helper getter functions return <code>GETDNS_RETURN_GOOD</code> if the call is successful. @@ -566,49 +566,49 @@ you need to create a dict. The requisite functions are:</p> <div class=forh id="datasetters"> /* Lists: create, destroy, and set the data at a given position */ -struct getdns_list * getdns_list_create(); -struct getdns_list * getdns_list_create_with_context( - struct getdns_context *context +getdns_list * getdns_list_create(); +getdns_list * getdns_list_create_with_context( + getdns_context *context ); -struct getdns_list * getdns_list_create_with_memory_functions( +getdns_list * getdns_list_create_with_memory_functions( void *(*malloc)(size_t), void *(*realloc)(void *, size_t), void (*free)(void *) ); -struct getdns_list * getdns_list_create_with_extended_memory_functions( +getdns_list * getdns_list_create_with_extended_memory_functions( void *userarg, void *(*malloc)(void *userarg, size_t), void *(*realloc)(void *userarg, void *, size_t), void (*free)(void *userarg, void *) ); -void getdns_list_destroy(struct getdns_list *this_list); -getdns_return_t getdns_list_set_dict(struct getdns_list *this_list, size_t index, const struct getdns_dict *child_dict); -getdns_return_t getdns_list_set_list(struct getdns_list *this_list, size_t index, const struct getdns_list *child_list); -getdns_return_t getdns_list_set_bindata(struct getdns_list *this_list, size_t index, const struct getdns_bindata *child_bindata); -getdns_return_t getdns_list_set_int(struct getdns_list *this_list, size_t index, uint32_t child_uint32); +void getdns_list_destroy(getdns_list *this_list); +getdns_return_t getdns_list_set_dict(getdns_list *this_list, size_t index, const getdns_dict *child_dict); +getdns_return_t getdns_list_set_list(getdns_list *this_list, size_t index, const getdns_list *child_list); +getdns_return_t getdns_list_set_bindata(getdns_list *this_list, size_t index, const getdns_bindata *child_bindata); +getdns_return_t getdns_list_set_int(getdns_list *this_list, size_t index, uint32_t child_uint32); /* Dicts: create, destroy, and set the data at a given name */ -struct getdns_dict * getdns_dict_create(); -struct getdns_dict * getdns_dict_create_with_context( - struct getdns_context *context +getdns_dict * getdns_dict_create(); +getdns_dict * getdns_dict_create_with_context( + getdns_context *context ); -struct getdns_dict * getdns_dict_create_with_memory_functions( +getdns_dict * getdns_dict_create_with_memory_functions( void *(*malloc)(size_t), void *(*realloc)(void *, size_t), void (*free)(void *) ); -struct getdns_dict * getdns_dict_create_with_extended_memory_functions( +getdns_dict * getdns_dict_create_with_extended_memory_functions( void *userarg, void *(*malloc)(void *userarg, size_t), void *(*realloc)(void *userarg, void *, size_t), void (*free)(void *userarg, void *) ); -void getdns_dict_destroy(struct getdns_dict *this_dict); -getdns_return_t getdns_dict_set_dict(struct getdns_dict *this_dict, const char *name, const struct getdns_dict *child_dict); -getdns_return_t getdns_dict_set_list(struct getdns_dict *this_dict, const char *name, const struct getdns_list *child_list); -getdns_return_t getdns_dict_set_bindata(struct getdns_dict *this_dict, const char *name, const struct getdns_bindata *child_bindata); -getdns_return_t getdns_dict_set_int(struct getdns_dict *this_dict, const char *name, uint32_t child_uint32); -getdns_return_t getdns_dict_remove_name(struct getdns_dict *this_dict, const char *name); +void getdns_dict_destroy(getdns_dict *this_dict); +getdns_return_t getdns_dict_set_dict(getdns_dict *this_dict, const char *name, const getdns_dict *child_dict); +getdns_return_t getdns_dict_set_list(getdns_dict *this_dict, const char *name, const getdns_list *child_list); +getdns_return_t getdns_dict_set_bindata(getdns_dict *this_dict, const char *name, const getdns_bindata *child_bindata); +getdns_return_t getdns_dict_set_int(getdns_dict *this_dict, const char *name, uint32_t child_uint32); +getdns_return_t getdns_dict_remove_name(getdns_dict *this_dict, const char *name); </div> <p>Lists are extended with the <code>getdns_list_set_</code> calls with the <code>index</code> set to the @@ -639,7 +639,7 @@ results that have been validated with DNSSEC, you might use:</p> <pre> /* . . . */ -struct getdns_dict * this_extensions = getdns_dict_create(); +getdns_dict * this_extensions = getdns_dict_create(); this_ret = getdns_dict_set_int(this_extensions, "dnssec_return_only_secure", GETDNS_EXTENSION_TRUE); /* . . . Do some processing with the extensions and results . . . */ /* Remember to clean up memory*/ @@ -1127,14 +1127,14 @@ string in FQDN format to bytes in DNS format.</p> <div class=forh> getdns_return_t getdns_convert_dns_name_to_fqdn( - const struct getdns_bindata *dns_name_wire_fmt, + const getdns_bindata *dns_name_wire_fmt, char **fqdn_as_string ); getdns_return_t getdns_convert_fqdn_to_dns_name( const char *fqdn_as_string, - struct getdns_bindata **dns_name_wire_fmt + getdns_bindata **dns_name_wire_fmt ); </div> @@ -1145,17 +1145,17 @@ The caller is responsible of disposing these allocations with <code>free</code>. <h2>5.1 A Few Needed Definitions</h2> -<div class=forh id="Various">struct getdns_context; +<div class=forh id="Various">typedef struct getdns_context getdns_context; typedef uint64_t getdns_transaction_t; typedef enum getdns_data_type { t_dict, t_list, t_int, t_bindata } getdns_data_type; -struct getdns_bindata { +typedef struct getdns_bindata { size_t size; uint8_t *data; -}; -struct getdns_dict; -struct getdns_list; +} getdns_bindata; +typedef struct getdns_dict getdns_dict; +typedef struct getdns_list getdns_list; </div> <h2>5.2 <a id="ReturnCodes">Return Codes</a></h2> @@ -1484,9 +1484,9 @@ function.</p> <span class="cp">#define UNUSED_PARAM(x) ((void)(x))</span> <span class="cm">/* Set up the callback function, which will also do the processing of the results */</span> -<span class="kt">void</span> <span class="nf">this_callbackfn</span><span class="p">(</span><span class="k">struct</span> <span class="n">getdns_context</span> <span class="o">*</span><span class="n">this_context</span><span class="p">,</span> +<span class="kt">void</span> <span class="nf">this_callbackfn</span><span class="p">(</span><span class="n">getdns_context</span> <span class="o">*</span><span class="n">this_context</span><span class="p">,</span> <span class="n">getdns_callback_type_t</span> <span class="n">this_callback_type</span><span class="p">,</span> - <span class="k">struct</span> <span class="n">getdns_dict</span> <span class="o">*</span><span class="n">this_response</span><span class="p">,</span> + <span class="n">getdns_dict</span> <span class="o">*</span><span class="n">this_response</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">this_userarg</span><span class="p">,</span> <span class="kt">getdns_transaction_t</span> <span class="n">this_transaction_id</span><span class="p">)</span> <span class="p">{</span> @@ -1504,7 +1504,7 @@ function.</p> <span class="n">getdns_dict_destroy</span><span class="p">(</span><span class="n">this_response</span><span class="p">);</span> <span class="k">return</span><span class="p">;</span> <span class="p">}</span> - <span class="k">struct</span> <span class="n">getdns_list</span> <span class="o">*</span> <span class="n">just_the_addresses_ptr</span><span class="p">;</span> + <span class="n">getdns_list</span> <span class="o">*</span> <span class="n">just_the_addresses_ptr</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_get_list</span><span class="p">(</span><span class="n">this_response</span><span class="p">,</span> <span class="s">"just_address_answers"</span><span class="p">,</span> <span class="o">&</span><span class="n">just_the_addresses_ptr</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="n">this_ret</span> <span class="o">!=</span> <span class="n">GETDNS_RETURN_GOOD</span><span class="p">)</span> <span class="c1">// This check is really not needed, but prevents a compiler error under "pedantic"</span> <span class="p">{</span> @@ -1517,10 +1517,10 @@ function.</p> <span class="cm">/* Go through each record */</span> <span class="k">for</span> <span class="p">(</span> <span class="kt">size_t</span> <span class="n">rec_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">rec_count</span> <span class="o"><</span> <span class="n">num_addresses</span><span class="p">;</span> <span class="o">++</span><span class="n">rec_count</span> <span class="p">)</span> <span class="p">{</span> - <span class="k">struct</span> <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_address</span><span class="p">;</span> + <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_address</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_list_get_dict</span><span class="p">(</span><span class="n">just_the_addresses_ptr</span><span class="p">,</span> <span class="n">rec_count</span><span class="p">,</span> <span class="o">&</span><span class="n">this_address</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="cm">/* Just print the address */</span> - <span class="k">struct</span> <span class="n">getdns_bindata</span> <span class="o">*</span> <span class="n">this_address_data</span><span class="p">;</span> + <span class="n">getdns_bindata</span> <span class="o">*</span> <span class="n">this_address_data</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_get_bindata</span><span class="p">(</span><span class="n">this_address</span><span class="p">,</span> <span class="s">"address_data"</span><span class="p">,</span> <span class="o">&</span><span class="n">this_address_data</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="kt">char</span> <span class="o">*</span><span class="n">this_address_str</span> <span class="o">=</span> <span class="n">getdns_display_ip_address</span><span class="p">(</span><span class="n">this_address_data</span><span class="p">);</span> <span class="n">printf</span><span class="p">(</span><span class="s">"The address is %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">this_address_str</span><span class="p">);</span> @@ -1537,7 +1537,7 @@ function.</p> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="cm">/* Create the DNS context for this call */</span> - <span class="k">struct</span> <span class="n">getdns_context</span> <span class="o">*</span><span class="n">this_context</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> + <span class="n">getdns_context</span> <span class="o">*</span><span class="n">this_context</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="kt">getdns_return_t</span> <span class="n">context_create_return</span> <span class="o">=</span> <span class="n">getdns_context_create</span><span class="p">(</span><span class="o">&</span><span class="n">this_context</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="n">context_create_return</span> <span class="o">!=</span> <span class="n">GETDNS_RETURN_GOOD</span><span class="p">)</span> <span class="p">{</span> @@ -1602,9 +1602,9 @@ their TTLs.</p> <span class="cp">#define UNUSED_PARAM(x) ((void)(x))</span> <span class="cm">/* Set up the callback function, which will also do the processing of the results */</span> -<span class="kt">void</span> <span class="nf">this_callbackfn</span><span class="p">(</span><span class="k">struct</span> <span class="n">getdns_context</span> <span class="o">*</span><span class="n">this_context</span><span class="p">,</span> +<span class="kt">void</span> <span class="nf">this_callbackfn</span><span class="p">(</span><span class="n">getdns_context</span> <span class="o">*</span><span class="n">this_context</span><span class="p">,</span> <span class="n">getdns_callback_type_t</span> <span class="n">this_callback_type</span><span class="p">,</span> - <span class="k">struct</span> <span class="n">getdns_dict</span> <span class="o">*</span><span class="n">this_response</span><span class="p">,</span> + <span class="n">getdns_dict</span> <span class="o">*</span><span class="n">this_response</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">this_userarg</span><span class="p">,</span> <span class="kt">getdns_transaction_t</span> <span class="n">this_transaction_id</span><span class="p">)</span> <span class="p">{</span> @@ -1623,7 +1623,7 @@ their TTLs.</p> <span class="k">return</span><span class="p">;</span> <span class="p">}</span> <span class="cm">/* Find all the answers returned */</span> - <span class="k">struct</span> <span class="n">getdns_list</span> <span class="o">*</span> <span class="n">these_answers</span><span class="p">;</span> + <span class="n">getdns_list</span> <span class="o">*</span> <span class="n">these_answers</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_get_list</span><span class="p">(</span><span class="n">this_response</span><span class="p">,</span> <span class="s">"replies_tree"</span><span class="p">,</span> <span class="o">&</span><span class="n">these_answers</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="n">this_ret</span> <span class="o">==</span> <span class="n">GETDNS_RETURN_NO_SUCH_DICT_NAME</span><span class="p">)</span> <span class="p">{</span> @@ -1636,20 +1636,20 @@ their TTLs.</p> <span class="cm">/* Go through each answer */</span> <span class="k">for</span> <span class="p">(</span> <span class="kt">size_t</span> <span class="n">rec_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">rec_count</span> <span class="o"><</span> <span class="n">num_answers</span><span class="p">;</span> <span class="o">++</span><span class="n">rec_count</span> <span class="p">)</span> <span class="p">{</span> - <span class="k">struct</span> <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_record</span><span class="p">;</span> + <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_record</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_list_get_dict</span><span class="p">(</span><span class="n">these_answers</span><span class="p">,</span> <span class="n">rec_count</span><span class="p">,</span> <span class="o">&</span><span class="n">this_record</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="cm">/* Get the answer section */</span> - <span class="k">struct</span> <span class="n">getdns_list</span> <span class="o">*</span> <span class="n">this_answer</span><span class="p">;</span> + <span class="n">getdns_list</span> <span class="o">*</span> <span class="n">this_answer</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_get_list</span><span class="p">(</span><span class="n">this_record</span><span class="p">,</span> <span class="s">"answer"</span><span class="p">,</span> <span class="o">&</span><span class="n">this_answer</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="cm">/* Get each RR in the answer section */</span> <span class="kt">size_t</span> <span class="n">num_rrs</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_list_get_length</span><span class="p">(</span><span class="n">this_answer</span><span class="p">,</span> <span class="o">&</span><span class="n">num_rrs</span><span class="p">);</span> <span class="k">for</span> <span class="p">(</span> <span class="kt">size_t</span> <span class="n">rr_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">rr_count</span> <span class="o"><</span> <span class="n">num_rrs</span><span class="p">;</span> <span class="o">++</span><span class="n">rr_count</span> <span class="p">)</span> <span class="p">{</span> - <span class="k">struct</span> <span class="n">getdns_dict</span> <span class="o">*</span><span class="n">this_rr</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> + <span class="n">getdns_dict</span> <span class="o">*</span><span class="n">this_rr</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_list_get_dict</span><span class="p">(</span><span class="n">this_answer</span><span class="p">,</span> <span class="n">rr_count</span><span class="p">,</span> <span class="o">&</span><span class="n">this_rr</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="cm">/* Get the RDATA */</span> - <span class="k">struct</span> <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_rdata</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> + <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_rdata</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_get_dict</span><span class="p">(</span><span class="n">this_rr</span><span class="p">,</span> <span class="s">"rdata"</span><span class="p">,</span> <span class="o">&</span><span class="n">this_rdata</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="cm">/* Get the RDATA type */</span> <span class="kt">uint32_t</span> <span class="n">this_type</span><span class="p">;</span> @@ -1657,7 +1657,7 @@ their TTLs.</p> <span class="cm">/* If it is type A or AAAA, print the value */</span> <span class="k">if</span> <span class="p">(</span><span class="n">this_type</span> <span class="o">==</span> <span class="n">GETDNS_RRTYPE_A</span><span class="p">)</span> <span class="p">{</span> - <span class="k">struct</span> <span class="n">getdns_bindata</span> <span class="o">*</span> <span class="n">this_a_record</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> + <span class="n">getdns_bindata</span> <span class="o">*</span> <span class="n">this_a_record</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_get_bindata</span><span class="p">(</span><span class="n">this_rdata</span><span class="p">,</span> <span class="s">"ipv4_address"</span><span class="p">,</span> <span class="o">&</span><span class="n">this_a_record</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="n">this_ret</span> <span class="o">==</span> <span class="n">GETDNS_RETURN_NO_SUCH_DICT_NAME</span><span class="p">)</span> <span class="p">{</span> @@ -1672,7 +1672,7 @@ their TTLs.</p> <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">this_type</span> <span class="o">==</span> <span class="n">GETDNS_RRTYPE_AAAA</span><span class="p">)</span> <span class="p">{</span> - <span class="k">struct</span> <span class="n">getdns_bindata</span> <span class="o">*</span> <span class="n">this_aaaa_record</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> + <span class="n">getdns_bindata</span> <span class="o">*</span> <span class="n">this_aaaa_record</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_get_bindata</span><span class="p">(</span><span class="n">this_rdata</span><span class="p">,</span> <span class="s">"ipv6_address"</span><span class="p">,</span> <span class="o">&</span><span class="n">this_aaaa_record</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="n">this_ret</span> <span class="o">==</span> <span class="n">GETDNS_RETURN_NO_SUCH_DICT_NAME</span><span class="p">)</span> <span class="p">{</span> @@ -1698,7 +1698,7 @@ their TTLs.</p> <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="cm">/* Create the DNS context for this call */</span> - <span class="k">struct</span> <span class="n">getdns_context</span> <span class="o">*</span><span class="n">this_context</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> + <span class="n">getdns_context</span> <span class="o">*</span><span class="n">this_context</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="kt">getdns_return_t</span> <span class="n">context_create_return</span> <span class="o">=</span> <span class="n">getdns_context_create</span><span class="p">(</span><span class="o">&</span><span class="n">this_context</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="n">context_create_return</span> <span class="o">!=</span> <span class="n">GETDNS_RETURN_GOOD</span><span class="p">)</span> <span class="p">{</span> @@ -1755,7 +1755,7 @@ callback function, add a check for the DNSSEC status. It shows how to add two extensions to the <code>extensions</code> argument of the call.</p> <pre> -struct getdns_dict * this_extensions = getdns_dict_create(); +getdns_dict * this_extensions = getdns_dict_create(); this_ret = getdns_dict_set_int(this_extensions, "return_both_v4_and_v6", GETDNS_EXTENSION_TRUE); this_ret = getdns_dict_set_int(this_extensions, "dnssec_return_status", GETDNS_EXTENSION_TRUE); . . . @@ -1795,7 +1795,7 @@ as it is for the synchronous example, it is just done in <code>main()</code>.</p <span class="p">{</span> <span class="kt">getdns_return_t</span> <span class="n">this_ret</span><span class="p">;</span> <span class="cm">/* Holder for all function returns */</span> <span class="cm">/* Create the DNS context for this call */</span> - <span class="k">struct</span> <span class="n">getdns_context</span> <span class="o">*</span><span class="n">this_context</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> + <span class="n">getdns_context</span> <span class="o">*</span><span class="n">this_context</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="kt">getdns_return_t</span> <span class="n">context_create_return</span> <span class="o">=</span> <span class="n">getdns_context_create</span><span class="p">(</span><span class="o">&</span><span class="n">this_context</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="n">context_create_return</span> <span class="o">!=</span> <span class="n">GETDNS_RETURN_GOOD</span><span class="p">)</span> <span class="p">{</span> @@ -1806,7 +1806,7 @@ as it is for the synchronous example, it is just done in <code>main()</code>.</p <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span> <span class="n">this_name</span> <span class="o">=</span> <span class="s">"www.example.com"</span><span class="p">;</span> <span class="kt">uint8_t</span> <span class="n">this_request_type</span> <span class="o">=</span> <span class="n">GETDNS_RRTYPE_A</span><span class="p">;</span> <span class="cm">/* Get the A and AAAA records */</span> - <span class="k">struct</span> <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_extensions</span> <span class="o">=</span> <span class="n">getdns_dict_create</span><span class="p">();</span> + <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_extensions</span> <span class="o">=</span> <span class="n">getdns_dict_create</span><span class="p">();</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_set_int</span><span class="p">(</span><span class="n">this_extensions</span><span class="p">,</span> <span class="s">"return_both_v4_and_v6"</span><span class="p">,</span> <span class="n">GETDNS_EXTENSION_TRUE</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="n">this_ret</span> <span class="o">!=</span> <span class="n">GETDNS_RETURN_GOOD</span><span class="p">)</span> <span class="p">{</span> @@ -1815,7 +1815,7 @@ as it is for the synchronous example, it is just done in <code>main()</code>.</p <span class="n">getdns_context_destroy</span><span class="p">(</span><span class="n">this_context</span><span class="p">);</span> <span class="k">return</span><span class="p">(</span><span class="n">GETDNS_RETURN_GENERIC_ERROR</span><span class="p">);</span> <span class="p">}</span> - <span class="k">struct</span> <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_response</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> + <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_response</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="cm">/* Make the call */</span> <span class="kt">getdns_return_t</span> <span class="n">dns_request_return</span> <span class="o">=</span> <span class="n">getdns_general_sync</span><span class="p">(</span><span class="n">this_context</span><span class="p">,</span> <span class="n">this_name</span><span class="p">,</span> <span class="n">this_request_type</span><span class="p">,</span> @@ -1841,17 +1841,17 @@ as it is for the synchronous example, it is just done in <code>main()</code>.</p <span class="n">getdns_context_destroy</span><span class="p">(</span><span class="n">this_context</span><span class="p">);</span> <span class="k">return</span><span class="p">(</span><span class="n">GETDNS_RETURN_GENERIC_ERROR</span><span class="p">);</span> <span class="p">}</span> - <span class="k">struct</span> <span class="n">getdns_list</span> <span class="o">*</span> <span class="n">just_the_addresses_ptr</span><span class="p">;</span> + <span class="n">getdns_list</span> <span class="o">*</span> <span class="n">just_the_addresses_ptr</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_get_list</span><span class="p">(</span><span class="n">this_response</span><span class="p">,</span> <span class="s">"just_address_answers"</span><span class="p">,</span> <span class="o">&</span><span class="n">just_the_addresses_ptr</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="kt">size_t</span> <span class="n">num_addresses</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_list_get_length</span><span class="p">(</span><span class="n">just_the_addresses_ptr</span><span class="p">,</span> <span class="o">&</span><span class="n">num_addresses</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="cm">/* Go through each record */</span> <span class="k">for</span> <span class="p">(</span> <span class="kt">size_t</span> <span class="n">rec_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">rec_count</span> <span class="o"><</span> <span class="n">num_addresses</span><span class="p">;</span> <span class="o">++</span><span class="n">rec_count</span> <span class="p">)</span> <span class="p">{</span> - <span class="k">struct</span> <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_address</span><span class="p">;</span> + <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_address</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_list_get_dict</span><span class="p">(</span><span class="n">just_the_addresses_ptr</span><span class="p">,</span> <span class="n">rec_count</span><span class="p">,</span> <span class="o">&</span><span class="n">this_address</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="cm">/* Just print the address */</span> - <span class="k">struct</span> <span class="n">getdns_bindata</span> <span class="o">*</span> <span class="n">this_address_data</span><span class="p">;</span> + <span class="n">getdns_bindata</span> <span class="o">*</span> <span class="n">this_address_data</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_get_bindata</span><span class="p">(</span><span class="n">this_address</span><span class="p">,</span> <span class="s">"address_data"</span><span class="p">,</span> <span class="o">&</span><span class="n">this_address_data</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="kt">char</span> <span class="o">*</span><span class="n">this_address_str</span> <span class="o">=</span> <span class="n">getdns_display_ip_address</span><span class="p">(</span><span class="n">this_address_data</span><span class="p">);</span> <span class="n">printf</span><span class="p">(</span><span class="s">"The address is %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">this_address_str</span><span class="p">);</span> @@ -1883,9 +1883,9 @@ as it is for the synchronous example, it is just done in <code>main()</code>.</p <span class="cp">#define UNUSED_PARAM(x) ((void)(x))</span> <span class="cm">/* Set up the callback function, which will also do the processing of the results */</span> -<span class="kt">void</span> <span class="nf">this_callbackfn</span><span class="p">(</span><span class="k">struct</span> <span class="n">getdns_context</span> <span class="o">*</span><span class="n">this_context</span><span class="p">,</span> +<span class="kt">void</span> <span class="nf">this_callbackfn</span><span class="p">(</span><span class="n">getdns_context</span> <span class="o">*</span><span class="n">this_context</span><span class="p">,</span> <span class="kt">uint16_t</span> <span class="n">this_callback_type</span><span class="p">,</span> - <span class="k">struct</span> <span class="n">getdns_dict</span> <span class="o">*</span><span class="n">this_response</span><span class="p">,</span> + <span class="n">getdns_dict</span> <span class="o">*</span><span class="n">this_response</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">this_userarg</span><span class="p">,</span> <span class="kt">getdns_transaction_t</span> <span class="n">this_transaction_id</span><span class="p">)</span> <span class="p">{</span> @@ -1904,34 +1904,34 @@ as it is for the synchronous example, it is just done in <code>main()</code>.</p <span class="n">getdns_dict_destroy</span><span class="p">(</span><span class="n">this_response</span><span class="p">);</span> <span class="k">return</span><span class="p">;</span> <span class="p">}</span> - <span class="k">struct</span> <span class="n">getdns_list</span> <span class="o">*</span><span class="n">replies_tree</span><span class="p">;</span> + <span class="n">getdns_list</span> <span class="o">*</span><span class="n">replies_tree</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_get_list</span><span class="p">(</span><span class="n">this_response</span><span class="p">,</span> <span class="s">"replies_tree"</span><span class="p">,</span> <span class="o">&</span><span class="n">replies_tree</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="kt">size_t</span> <span class="n">num_replies</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_list_get_length</span><span class="p">(</span><span class="n">replies_tree</span><span class="p">,</span> <span class="o">&</span><span class="n">num_replies</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="cm">/* Go through each reply */</span> <span class="k">for</span> <span class="p">(</span> <span class="kt">size_t</span> <span class="n">reply_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">reply_count</span> <span class="o"><</span> <span class="n">num_replies</span><span class="p">;</span> <span class="o">++</span><span class="n">reply_count</span><span class="p">)</span> <span class="p">{</span> - <span class="k">struct</span> <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_reply</span><span class="p">;</span> + <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_reply</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_list_get_dict</span><span class="p">(</span><span class="n">replies_tree</span><span class="p">,</span> <span class="n">reply_count</span><span class="p">,</span> <span class="o">&</span><span class="n">this_reply</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="cm">/* Just print the address */</span> - <span class="k">struct</span> <span class="n">getdns_list</span><span class="o">*</span> <span class="n">reply_answers</span><span class="p">;</span> + <span class="n">getdns_list</span><span class="o">*</span> <span class="n">reply_answers</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_get_list</span><span class="p">(</span><span class="n">this_reply</span><span class="p">,</span> <span class="s">"answer"</span><span class="p">,</span> <span class="o">&</span><span class="n">reply_answers</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="kt">size_t</span> <span class="n">num_answers</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_list_get_length</span><span class="p">(</span><span class="n">reply_answers</span><span class="p">,</span> <span class="o">&</span><span class="n">num_answers</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="cm">/* Go through each answer */</span> <span class="k">for</span> <span class="p">(</span> <span class="kt">size_t</span> <span class="n">answer_count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">answer_count</span> <span class="o"><</span> <span class="n">num_answers</span><span class="p">;</span> <span class="o">++</span><span class="n">answer_count</span><span class="p">)</span> <span class="p">{</span> - <span class="k">struct</span> <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_rr</span><span class="p">;</span> + <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_rr</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_list_get_dict</span><span class="p">(</span><span class="n">reply_answers</span><span class="p">,</span> <span class="n">answer_count</span><span class="p">,</span> <span class="o">&</span><span class="n">this_rr</span><span class="p">);</span> <span class="cm">/* Get the RDATA type */</span> <span class="kt">uint32_t</span> <span class="n">this_type</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_get_int</span><span class="p">(</span><span class="n">this_rr</span><span class="p">,</span> <span class="s">"type"</span><span class="p">,</span> <span class="o">&</span><span class="n">this_type</span><span class="p">);</span> <span class="c1">// Ignore any error</span> <span class="k">if</span> <span class="p">(</span><span class="n">this_type</span> <span class="o">==</span> <span class="n">GETDNS_RRTYPE_PTR</span><span class="p">)</span> <span class="p">{</span> - <span class="k">struct</span> <span class="n">getdns_dict</span> <span class="o">*</span><span class="n">this_rdata</span><span class="p">;</span> + <span class="n">getdns_dict</span> <span class="o">*</span><span class="n">this_rdata</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_get_dict</span><span class="p">(</span><span class="n">this_rr</span><span class="p">,</span> <span class="s">"rdata"</span><span class="p">,</span> <span class="o">&</span><span class="n">this_rdata</span><span class="p">);</span> <span class="c1">// Ignore any error</span> - <span class="k">struct</span> <span class="n">getdns_bindata</span> <span class="o">*</span> <span class="n">this_dname</span><span class="p">;</span> + <span class="n">getdns_bindata</span> <span class="o">*</span> <span class="n">this_dname</span><span class="p">;</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_get_bindata</span><span class="p">(</span><span class="n">this_rdata</span><span class="p">,</span> <span class="s">"rdata_raw"</span><span class="p">,</span> <span class="o">&</span><span class="n">this_dname</span><span class="p">);</span> <span class="kt">char</span> <span class="o">*</span><span class="n">this_dname_str</span> <span class="o">=</span> <span class="n">getdns_convert_dns_name_to_fqdn</span><span class="p">((</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n">this_dname</span><span class="o">-></span><span class="n">data</span><span class="p">);</span> <span class="n">printf</span><span class="p">(</span><span class="s">"The dname is %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">this_dname_str</span><span class="p">);</span> @@ -1952,7 +1952,7 @@ as it is for the synchronous example, it is just done in <code>main()</code>.</p <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="cm">/* Create the DNS context for this call */</span> - <span class="k">struct</span> <span class="n">getdns_context</span> <span class="o">*</span><span class="n">this_context</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> + <span class="n">getdns_context</span> <span class="o">*</span><span class="n">this_context</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> <span class="kt">getdns_return_t</span> <span class="n">context_create_return</span> <span class="o">=</span> <span class="n">getdns_context_create</span><span class="p">(</span><span class="o">&</span><span class="n">this_context</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="k">if</span> <span class="p">(</span><span class="n">context_create_return</span> <span class="o">!=</span> <span class="n">GETDNS_RETURN_GOOD</span><span class="p">)</span> <span class="p">{</span> @@ -1970,12 +1970,12 @@ as it is for the synchronous example, it is just done in <code>main()</code>.</p <span class="p">}</span> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">getdns_extension_set_libevent_base</span><span class="p">(</span><span class="n">this_context</span><span class="p">,</span> <span class="n">this_event_base</span><span class="p">);</span> <span class="cm">/* Set up the getdns call */</span> - <span class="k">struct</span> <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_addr_to_look_up</span> <span class="o">=</span> <span class="n">getdns_dict_create</span><span class="p">();</span> + <span class="n">getdns_dict</span> <span class="o">*</span> <span class="n">this_addr_to_look_up</span> <span class="o">=</span> <span class="n">getdns_dict_create</span><span class="p">();</span> <span class="c1">// TODO: check the return value above</span> - <span class="k">struct</span> <span class="n">getdns_bindata</span> <span class="n">this_type</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">4</span><span class="p">,</span> <span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="p">)</span><span class="s">"IPv4"</span> <span class="p">};</span> + <span class="n">getdns_bindata</span> <span class="n">this_type</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">4</span><span class="p">,</span> <span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="p">)</span><span class="s">"IPv4"</span> <span class="p">};</span> <span class="kt">getdns_return_t</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_set_bindata</span><span class="p">(</span><span class="n">this_addr_to_look_up</span><span class="p">,</span> <span class="s">"address_type"</span><span class="p">,</span> <span class="o">&</span><span class="n">this_type</span><span class="p">);</span> <span class="n">UNUSED_PARAM</span><span class="p">(</span><span class="n">this_ret</span><span class="p">);</span> - <span class="k">struct</span> <span class="n">getdns_bindata</span> <span class="n">this_ipv4_addr</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">4</span><span class="p">,</span> <span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="p">)</span><span class="s">"</span><span class="se">\x08\x08\x08\x08</span><span class="s">"</span> <span class="p">};</span> + <span class="n">getdns_bindata</span> <span class="n">this_ipv4_addr</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">4</span><span class="p">,</span> <span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="p">)</span><span class="s">"</span><span class="se">\x08\x08\x08\x08</span><span class="s">"</span> <span class="p">};</span> <span class="n">this_ret</span> <span class="o">=</span> <span class="n">getdns_dict_set_bindata</span><span class="p">(</span><span class="n">this_addr_to_look_up</span><span class="p">,</span> <span class="s">"address_data"</span><span class="p">,</span> <span class="o">&</span><span class="n">this_ipv4_addr</span><span class="p">);</span> <span class="kt">char</span><span class="o">*</span> <span class="n">this_userarg</span> <span class="o">=</span> <span class="s">"somestring"</span><span class="p">;</span> <span class="c1">// Could add things here to help identify this call</span> <span class="kt">getdns_transaction_t</span> <span class="n">this_transaction_id</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> @@ -2032,9 +2032,9 @@ getdns_convert_alabel_to_ulabel( can use the <code>getdns_validate_dnssec()</code> helper function.</p> <div class=forh>getdns_return_t getdns_validate_dnssec( - struct getdns_list *record_to_validate, - struct getdns_list *bundle_of_support_records, - struct getdns_list *trust_anchor_rdatas + getdns_list *record_to_validate, + getdns_list *bundle_of_support_records, + getdns_list *trust_anchor_records ); </div> <p class=cont> @@ -2048,7 +2048,7 @@ The function returns one of <code>GETDNS_DNSSEC_SECURE</code>, <code>GETDNS_DNSS <div class=forh> char * getdns_pretty_print_dict( - const struct getdns_dict *some_dict + const getdns_dict *some_dict ); </div> <p class=cont>This returns a string that is the nicely-formatted version @@ -2057,7 +2057,7 @@ of the dict and all of the named elements in it.</p> <div class=forh> char * getdns_display_ip_address( - const struct getdns_bindata *bindata_of_ipv4_or_ipv6_address + const getdns_bindata *bindata_of_ipv4_or_ipv6_address ); </div> <p class=cont>This returns a string that is the nicely-formatted version @@ -2125,8 +2125,8 @@ success or <code>GETDNS_RETURN_CONTEXT_UPDATE_FAIL</code> for a failure to updat <div class=forh> getdns_return_t getdns_context_set_context_update_callback( - struct getdns_context *context, - void (*value)(struct getdns_context *context, getdns_context_code_t changed_item) + getdns_context *context, + void (*value)(getdns_context *context, getdns_context_code_t changed_item) );</div> <p class=cont>The value is a pointer to the callback function that will be called when any context is changed. Such changes might be from automatic @@ -2141,8 +2141,8 @@ specifies which of the context changed; the context codes are listed <div class=forh> getdns_return_t getdns_context_set_resolution_type( - struct getdns_context *context, - getdns_resolution_t value + getdns_context *context, + getdns_resolution_t value );</div> <p class=cont>Specifies whether DNS queries are performed with nonrecurive lookups or as a stub resolver. The value is <span class=default><code>GETDNS_RESOLUTION_RECURSING</code></span> or @@ -2159,9 +2159,9 @@ return <code>GETDNS_RETURN_CONTEXT_UPDATE_FAIL</code>.</p> <div class=forh> getdns_return_t getdns_context_set_namespaces( - struct getdns_context *context, - size_t namespace_count, - getdns_namespace_t *namespaces + getdns_context *context, + size_t namespace_count, + getdns_namespace_t *namespaces );</div> <p class=cont>The <code>namespaces</code> array contains an ordered list of namespaces that will be queried. @@ -2184,8 +2184,8 @@ default is <span class=default>determined by the OS</span>.</p> <div class=forh> getdns_return_t getdns_context_set_dns_transport( - struct getdns_context *context, - getdns_transport_t value + getdns_context *context, + getdns_transport_t value );</div> <p class=cont>Specifies what transport is used for DNS lookups. The value is <span class=default> @@ -2197,8 +2197,8 @@ The value is <span class=default> <div class=forh> getdns_return_t getdns_context_set_limit_outstanding_queries( - struct getdns_context *context, - uint16_t limit + getdns_context *context, + uint16_t limit );</div> <p class=cont>Specifies limit the number of outstanding DNS queries. The API will block itself from sending more queries if it is about to exceed @@ -2209,8 +2209,8 @@ the number of outstanding DNS queries is unlimited.</p> <div class=forh> getdns_return_t getdns_context_set_timeout( - struct getdns_context *context, - uint64_t timeout + getdns_context *context, + uint64_t timeout );</div> <p class=cont>Specifies number of milliseconds the API will wait for request to return. The default is <span class=default>not specified</span>.</p> @@ -2220,8 +2220,8 @@ The default is <span class=default>not specified</span>.</p> <div class=forh> getdns_return_t getdns_context_set_follow_redirects( - struct getdns_context *context, - getdns_redirects_t value + getdns_context *context, + getdns_redirects_t value );</div> <p class=cont>Specifies whether or not DNS queries follow redirects. The value is <span class=default><code>GETDNS_REDIRECTS_FOLLOW</code></span> for normal @@ -2232,8 +2232,8 @@ through CNAME and DNAME to return the CNAME or DNAME, not the eventual target.</ <div class=forh> getdns_return_t getdns_context_set_dns_root_servers( - struct getdns_context *context, - struct getdns_list *addresses + getdns_context *context, + getdns_list *addresses );</div> <p class=cont>The list contains dicts that are addresses to be used for looking up top-level domains; the default is the list of <b>"normal" IANA root servers</b>. Each dict in the list @@ -2245,8 +2245,8 @@ either "IPv4" or "IPv6") and <code>address_data</code> (whose value is a bindata <div class=forh> getdns_return_t getdns_context_set_append_name( - struct getdns_context *context, - getdns_append_name_t value + getdns_context *context, + getdns_append_name_t value );</div> <p class=cont>Specifies whether to append a suffix to the query string before the API starts resolving a name. @@ -2260,8 +2260,8 @@ whether or not to append the suffix given by <code>getdns_context_set_suffix</co <div class=forh> getdns_return_t getdns_context_set_suffix( - struct getdns_context *context, - struct getdns_list *value + getdns_context *context, + getdns_list *value );</div> <p class=cont>The value is a list of bindatas that are strings that are to be appended based on <code>getdns_context_set_append_name</code>; the default is an <span @@ -2276,8 +2276,8 @@ to allow non-ASCII octets and special characters in labels.</p> <div class=forh> getdns_return_t getdns_context_set_dnssec_trust_anchors( - struct getdns_context *context, - struct getdns_list *value + getdns_context *context, + getdns_list *value );</div> <p class=cont>The value is a list of bindatas that are the DNSSEC trust anchors. The default is the trust anchors from the <span class=default>IANA root</span>. The trust anchors @@ -2287,8 +2287,8 @@ are expressed as RDATAs from DNSKEY resource records.</p> <div class=forh> getdns_return_t getdns_context_set_dnssec_allowed_skew( - struct getdns_context *context, - uint32_t value + getdns_context *context, + uint32_t value );</div> <p class=cont>The value is the number of seconds of skew that is allowed in either direction when checking an RRSIG's Expiration and Inception fields. The default @@ -2307,8 +2307,8 @@ must do its own DNSSEC processing, possibly with the <code>getdns_validate_dnsse <div class=forh> getdns_return_t getdns_context_set_upstream_recursive_servers( - struct getdns_context *context, - struct getdns_list *upstream_list + getdns_context *context, + getdns_list *upstream_list );</div> <p class=cont>The list of dicts define where a stub resolver will send queries. Each dict contains at least two names: <code>address_type</code> (whose value is a bindata; it is currently either @@ -2326,8 +2326,8 @@ These come from RFC 2671.</p> <div class=forh> getdns_return_t getdns_context_set_edns_maximum_udp_payload_size( - struct getdns_context *context, - uint16_t value + getdns_context *context, + uint16_t value );</div> <p class=cont>The value is between 512 and 65535; the default is <span class=default>512</span>.</p> @@ -2335,8 +2335,8 @@ is <span class=default>512</span>.</p> <div class=forh> getdns_return_t getdns_context_set_edns_extended_rcode( - struct getdns_context *context, - uint8_t value + getdns_context *context, + uint8_t value );</div> <p class=cont>The value is between 0 and 255; the default is <span class=default>0</span>.</p> @@ -2344,8 +2344,8 @@ is <span class=default>0</span>.</p> <div class=forh> getdns_return_t getdns_context_set_edns_version( - struct getdns_context *context, - uint8_t value + getdns_context *context, + uint8_t value );</div> <p class=cont>The value is between 0 and 255; the default is <span class=default>0</span>.</p> @@ -2353,8 +2353,8 @@ is <span class=default>0</span>.</p> <div class=forh> getdns_return_t getdns_context_set_edns_do_bit( - struct getdns_context *context, - uint8_t value + getdns_context *context, + uint8_t value );</div> <p class=cont>The value is between 0 and 1; the default is <span class=default>0</span>.</p> @@ -2364,10 +2364,10 @@ is <span class=default>0</span>.</p> <div class=forh> getdns_return_t getdns_context_set_memory_functions( - struct getdns_context *context, - void *(*malloc) (size_t), - void *(*realloc) (void *, size_t), - void (*free) (void *) + getdns_context *context, + void *(*malloc) (size_t), + void *(*realloc) (void *, size_t), + void (*free) (void *) );</div> <p class=cont>The given memory management functions will be used for creating the response dicts. The response dicts inherit the custom memory management functions from the context and will deallocate themselves (and their members) with the custom deallocator. @@ -2376,11 +2376,11 @@ By default, the system <span class=default>malloc</span>, <span class=default>re <div class=forh> getdns_return_t getdns_context_set_extended_memory_functions( - struct getdns_context *context, - void *userarg, - void *(*malloc)(void *userarg, size_t sz), - void *(*realloc)(void *userarg, void *ptr, size_t sz), - void (*free)(void *userarg, void *ptr) + getdns_context *context, + void *userarg, + void *(*malloc)(void *userarg, size_t sz), + void *(*realloc)(void *userarg, void *ptr, size_t sz), + void (*free)(void *userarg, void *ptr) );</div> <p class=cont>The given extended memory management functions will be used for creating the response dicts. The value of <code>userarg</code> argument will be passed to the custom <code>malloc</code>, <code>realloc</code>, and <code>free</code>. @@ -2428,7 +2428,7 @@ The response dicts inherit the custom memory management functions and the value <h1>9. The Generated Files</h1> -<p>There is <a href="getdns-0.399.tgz">a tarball</a> that includes the .h files, +<p>There is <a href="getdns-0.400.tgz">a tarball</a> that includes the .h files, the examples, and so on. The examples all make, even though there is no API implementation, based on a pseudo-implementation in the tarball; see make-examples-PLATFORM.sh. Note that this currently builds fine on the Macintosh and Ubuntu; help is definitely appreciated on making the build process