Go to the source code of this file.
Data Structures | |
struct | Request |
Request we should make. More... | |
Macros | |
#define | THRESH 20 |
Maximum number of queries pending at the same time. More... | |
#define | TIME_THRESH 10 |
TIME_THRESH is in usecs. More... | |
#define | MAX_RETRIES 5 |
How often do we retry a query before giving up for good? More... | |
Functions | |
static void | process_record (struct Request *req, struct GNUNET_DNSPARSER_Record *rec) |
We received rec for req. More... | |
static void | process_result (void *cls, const struct GNUNET_TUN_DnsHeader *dns, size_t dns_len) |
Function called with the result of a DNS resolution. More... | |
static int | submit_req (struct Request *req) |
Submit a request to DNS unless we need to slow down because we are at the rate limit. More... | |
static void | process_queue (void *cls) |
Process as many requests as possible from the queue. More... | |
static void | do_shutdown (void *cls) |
Clean up and terminate the process. More... | |
static void | run (void *cls) |
Process requests from the queue, then if the queue is not empty, try again. More... | |
static void | queue (const char *hostname) |
Add hostname to the list of requests to be made. More... | |
int | main (int argc, char **argv) |
Call with IP address of resolver to query. More... | |
Variables | |
static struct GNUNET_DNSSTUB_Context * | ctx |
Context for DNS resolution. More... | |
static unsigned int | pending |
The number of queries that are outstanding. More... | |
static unsigned int | lookups |
Number of lookups we performed overall. More... | |
static unsigned int | failures |
Number of lookups that failed. More... | |
static unsigned int | records |
Number of records we found. More... | |
static struct Request * | req_head |
Head of DLL of all requests to perform. More... | |
static struct Request * | req_tail |
Tail of DLL of all requests to perform. More... | |
static struct GNUNET_SCHEDULER_Task * | t |
Main task. More... | |
#define THRESH 20 |
Maximum number of queries pending at the same time.
Definition at line 124 of file gnunet-zonewalk.c.
#define TIME_THRESH 10 |
TIME_THRESH is in usecs.
How quickly do we submit fresh queries. Used as an additional throttle.
Definition at line 130 of file gnunet-zonewalk.c.
#define MAX_RETRIES 5 |
How often do we retry a query before giving up for good?
Definition at line 135 of file gnunet-zonewalk.c.
|
static |
We received rec for req.
Remember the answer.
req | request |
rec | response |
Definition at line 145 of file gnunet-zonewalk.c.
References buf, GNUNET_DNSPARSER_RawRecord::data, GNUNET_DNSPARSER_Record::data, GNUNET_DNSPARSER_RawRecord::data_len, GNUNET_DNSPARSER_SoaRecord::expire, GNUNET_DNSPARSER_TYPE_A, GNUNET_DNSPARSER_TYPE_AAAA, GNUNET_DNSPARSER_TYPE_AFSDB, GNUNET_DNSPARSER_TYPE_APL, GNUNET_DNSPARSER_TYPE_CDNSKEY, GNUNET_DNSPARSER_TYPE_CDS, GNUNET_DNSPARSER_TYPE_CERT, GNUNET_DNSPARSER_TYPE_CNAME, GNUNET_DNSPARSER_TYPE_DHCID, GNUNET_DNSPARSER_TYPE_DNAME, GNUNET_DNSPARSER_TYPE_DNSKEY, GNUNET_DNSPARSER_TYPE_DS, GNUNET_DNSPARSER_TYPE_HIP, GNUNET_DNSPARSER_TYPE_IPSECKEY, GNUNET_DNSPARSER_TYPE_KEY, GNUNET_DNSPARSER_TYPE_KX, GNUNET_DNSPARSER_TYPE_LOC, GNUNET_DNSPARSER_TYPE_MX, GNUNET_DNSPARSER_TYPE_NAPTR, GNUNET_DNSPARSER_TYPE_NS, GNUNET_DNSPARSER_TYPE_NSEC, GNUNET_DNSPARSER_TYPE_NSEC3, GNUNET_DNSPARSER_TYPE_NSEC3PARAM, GNUNET_DNSPARSER_TYPE_OPENPGPKEY, GNUNET_DNSPARSER_TYPE_PTR, GNUNET_DNSPARSER_TYPE_RP, GNUNET_DNSPARSER_TYPE_RRSIG, GNUNET_DNSPARSER_TYPE_SIG, GNUNET_DNSPARSER_TYPE_SOA, GNUNET_DNSPARSER_TYPE_SRV, GNUNET_DNSPARSER_TYPE_SSHFP, GNUNET_DNSPARSER_TYPE_TA, GNUNET_DNSPARSER_TYPE_TKEY, GNUNET_DNSPARSER_TYPE_TLSA, GNUNET_DNSPARSER_TYPE_TSIG, GNUNET_DNSPARSER_TYPE_TXT, GNUNET_DNSPARSER_TYPE_URI, GNUNET_free, GNUNET_STRINGS_data_to_string_alloc(), Request::hostname, GNUNET_DNSPARSER_Record::hostname, GNUNET_DNSPARSER_SoaRecord::minimum_ttl, GNUNET_DNSPARSER_SoaRecord::mname, GNUNET_DNSPARSER_Record::mx, GNUNET_DNSPARSER_MxRecord::mxhost, GNUNET_DNSPARSER_SrvRecord::port, GNUNET_DNSPARSER_MxRecord::preference, GNUNET_DNSPARSER_SrvRecord::priority, GNUNET_DNSPARSER_Record::raw, records, GNUNET_DNSPARSER_SoaRecord::refresh, GNUNET_DNSPARSER_SoaRecord::retry, GNUNET_DNSPARSER_SoaRecord::rname, GNUNET_DNSPARSER_SoaRecord::serial, GNUNET_DNSPARSER_Record::soa, GNUNET_DNSPARSER_Record::srv, GNUNET_DNSPARSER_SrvRecord::target, GNUNET_DNSPARSER_Record::type, and GNUNET_DNSPARSER_SrvRecord::weight.
Referenced by process_result().
|
static |
Function called with the result of a DNS resolution.
cls | closure with the struct Request |
dns | dns response, never NULL |
dns_len | number of bytes in dns |
Definition at line 305 of file gnunet-zonewalk.c.
References failures, GNUNET_CONTAINER_DLL_insert_tail, GNUNET_CONTAINER_DLL_remove, GNUNET_DNSPARSER_free_packet(), GNUNET_DNSPARSER_parse(), GNUNET_DNSSTUB_resolve_cancel(), GNUNET_ERROR_TYPE_ERROR, GNUNET_free, GNUNET_log, Request::hostname, Request::id, GNUNET_TUN_DnsHeader::id, Request::issue_num, MAX_RETRIES, p, pending, process_record(), Request::raw, req_head, req_tail, and Request::rs.
Referenced by submit_req().
|
static |
Submit a request to DNS unless we need to slow down because we are at the rate limit.
req | request to submit |
Definition at line 402 of file gnunet-zonewalk.c.
References ctx, GNUNET_assert, GNUNET_DNSSTUB_resolve(), GNUNET_NO, GNUNET_OK, GNUNET_SYSERR, Request::issue_num, lookups, pending, process_result(), Request::raw, Request::raw_len, Request::rs, THRESH, Request::time, and TIME_THRESH.
Referenced by process_queue().
|
static |
Process as many requests as possible from the queue.
cls | NULL |
Definition at line 437 of file gnunet-zonewalk.c.
References GNUNET_SCHEDULER_add_delayed(), GNUNET_SCHEDULER_shutdown(), GNUNET_SYSERR, GNUNET_TIME_UNIT_MILLISECONDS, Request::next, req_head, submit_req(), and t.
Referenced by run().
|
static |
Clean up and terminate the process.
cls | NULL |
Definition at line 463 of file gnunet-zonewalk.c.
References ctx, GNUNET_DNSSTUB_stop(), GNUNET_SCHEDULER_cancel(), and t.
Referenced by run().
|
static |
Process requests from the queue, then if the queue is not empty, try again.
cls | NULL |
Definition at line 483 of file gnunet-zonewalk.c.
References do_shutdown(), GNUNET_SCHEDULER_add_now(), GNUNET_SCHEDULER_add_shutdown(), process_queue(), and t.
Referenced by main().
|
static |
Add hostname to the list of requests to be made.
hostname | name to resolve |
Definition at line 500 of file gnunet-zonewalk.c.
References GNUNET_CONTAINER_DLL_insert_tail, GNUNET_CRYPTO_QUALITY_NONCE, GNUNET_CRYPTO_random_u32(), GNUNET_DNSPARSER_check_name(), GNUNET_DNSPARSER_pack(), GNUNET_DNSPARSER_TYPE_NS, GNUNET_ERROR_TYPE_ERROR, GNUNET_free, GNUNET_log, GNUNET_new, GNUNET_NO, GNUNET_OK, GNUNET_TUN_DNS_CLASS_INTERNET, Request::hostname, hostname, Request::id, p, q, Request::raw, raw, Request::raw_len, req_head, req_tail, and ret.
Referenced by __attribute__(), adapt_parallelism(), adaptive_queue_set_max_active(), assign_timeslot(), boot_queue(), check_for_queue_with_higher_prio(), check_vl_transmission(), cleanup_tslots(), core_read_finished_cb(), decrypt_and_check_tc(), do_rekey(), fragment_message(), free_pending_acknowledgement(), free_queue(), get_audiobin(), get_queue_delete_it(), GNUNET_TESTBED_operation_queue_create_(), GNUNET_TESTBED_operation_queue_destroy_(), GNUNET_TESTBED_operation_queue_destroy_empty_(), GNUNET_TESTBED_operation_queue_insert2_(), GNUNET_TESTBED_operation_queue_insert_(), GNUNET_TESTBED_operation_queue_reset_max_active_(), handle_add_queue_message(), handle_del_queue_message(), handle_send_message_ack(), handshake_ack_monotime_cb(), handshake_ack_monotime_store_cb(), handshake_monotime_cb(), handshake_monotime_store_cb(), inject_rekey(), lookup_queue_it(), main(), mq_cancel(), mq_destroy(), mq_error(), mq_init(), mq_send(), pass_plaintext_to_core(), prepare_pending_acknowledgement(), process_rq_task(), proto_read_kx(), queue_destroy(), queue_finish(), queue_read(), queue_read_kx(), queue_send_msg(), queue_timeout(), queue_write(), rekey_monotime_cb(), rekey_monotime_store_cb(), reliability_box_message(), reschedule_queue_timeout(), schedule_transmit_on_queue(), select_best_pending_from_link(), select_read_cb(), select_write_cb(), send_challenge(), setup_in_cipher(), setup_out_cipher(), setup_queue(), start_initial_kx_out(), transmit_kx(), transmit_on_queue(), try_handle_plaintext(), and update_tslots().
int main | ( | int | argc, |
char ** | argv | ||
) |
Call with IP address of resolver to query.
argc | should be 2 |
argv[1] | should contain IP address |
Definition at line 561 of file gnunet-zonewalk.c.
References ctx, failures, GNUNET_DNSSTUB_add_dns_ip(), GNUNET_DNSSTUB_start(), GNUNET_OK, GNUNET_SCHEDULER_run(), Request::hn, lookups, pending, queue(), records, and run().
|
static |
Context for DNS resolution.
Definition at line 84 of file gnunet-zonewalk.c.
Referenced by add_address_to_hello(), add_address_to_uri(), add_plugin(), automaton_merge_states(), block_plugin_template_check_block(), block_plugin_test_check_block(), cadet_connect_adapter(), cadet_connect_cb(), cadet_test_run(), callback_update_ego(), cancel_get(), check_connection_quality(), check_edge(), checkvec(), construct_dfa_states(), core_env_sent_cb(), cr_cont(), create_peer_ctx(), curl_download_cb(), debugctx(), delayed_put(), derive_aes_key(), derive_auth_key(), derive_iv(), derive_pong_iv(), dfa_add_multi_strides_helper(), dfa_merge_nondistinguishable_states(), dfa_minimize(), dfa_state_create(), dht_connect_cb(), dht_connected(), dht_get_string_accept_handler(), dht_get_string_handler(), dht_test_run(), do_dns_read(), do_shutdown(), find_best_address_it(), find_plugin(), finish_handling_raw_message(), forward_reply(), GCT_iterate_channels(), GDS_u_connect(), GDS_u_disconnect(), get_iter(), get_longest_prefix(), get_peer_ctx(), get_request_socket(), GNUNET_BLOCK_check_block(), GNUNET_BLOCK_context_create(), GNUNET_BLOCK_context_destroy(), GNUNET_CADET_TEST_cleanup(), GNUNET_CADET_TEST_ruN(), GNUNET_CRYPTO_ecdsa_private_key_derive(), GNUNET_CRYPTO_ecdsa_public_key_derive(), GNUNET_CRYPTO_eddsa_private_key_derive(), GNUNET_CRYPTO_eddsa_public_key_derive(), GNUNET_CRYPTO_kdf_mod_mpi(), GNUNET_CURL_enable_async_scope_header(), GNUNET_CURL_fini(), GNUNET_CURL_get_select_info(), GNUNET_CURL_gnunet_rc_create(), GNUNET_CURL_gnunet_rc_create_with_parser(), GNUNET_CURL_init(), GNUNET_CURL_job_add(), GNUNET_CURL_job_add2(), GNUNET_CURL_job_add_raw(), GNUNET_CURL_job_add_with_ct_json(), GNUNET_CURL_job_cancel(), GNUNET_CURL_perform(), GNUNET_CURL_perform2(), GNUNET_CURL_set_tlscert(), GNUNET_CURL_set_userpass(), GNUNET_DHT_TEST_cleanup(), GNUNET_DHT_TEST_run(), GNUNET_DNSSTUB_add_dns_ip(), GNUNET_DNSSTUB_add_dns_sa(), GNUNET_DNSSTUB_resolve(), GNUNET_DNSSTUB_set_retry(), GNUNET_DNSSTUB_start(), GNUNET_DNSSTUB_stop(), GNUNET_HELLO_compose_uri(), GNUNET_HELLO_parse_uri(), GNUNET_OP_add(), GNUNET_OP_get(), GNUNET_OP_result(), GNUNET_PLUGIN_load_all_in_context(), GNUNET_PQ_event_do_poll(), GNUNET_SET_element_hash(), GNUNET_SETI_element_hash(), GNUNET_SETU_element_hash(), GNUNET_SIGNAL_handler_uninstall(), GNUNET_SIGNAL_raise(), id_connect_cb(), identity_cb(), inspect_attrs(), iterate_channels_cb(), LEGACY_SERVICE_get_listen_sockets(), LEGACY_SERVICE_get_server(), libgnunet_plugin_block_consensus_done(), libgnunet_plugin_block_consensus_init(), main(), make_file(), new_regex_ctx(), nfa_add_alternation(), nfa_add_concatenation(), nfa_add_label(), nfa_add_plus_op(), nfa_add_question_op(), nfa_add_star_op(), nfa_state_create(), op_get_element(), op_get_element_iterator(), op_result(), output_vectors(), pabc_create_presentation(), PABC_load_public_parameters(), regex_add(), regex_add_multiple(), REGEX_BLOCK_check(), regex_combine(), regex_ctx_destroy(), regex_edge_iterator(), regex_find_path(), REGEX_INTERNAL_construct_dfa(), REGEX_INTERNAL_construct_nfa(), REGEX_INTERNAL_context_init(), REGEX_INTERNAL_dfa_add_multi_strides(), REGEX_INTERNAL_search(), regex_next_edge(), regex_result_iterator(), regex_split(), REGEX_TEST_automaton_save_graph(), REGEX_TEST_automaton_save_graph_step(), REGEX_TEST_combine(), service_started(), setup_job(), setup_job_headers(), start_profiling(), state_add_transition(), submit_req(), t_ax_decrypt_and_validate(), t_ax_encrypt(), t_ax_hmac_hash(), t_hmac(), t_hmac_derive_key(), tcp_send(), tmain(), transmit_query(), try_send_tcp(), u_address_add(), and u_address_del().
|
static |
The number of queries that are outstanding.
Definition at line 89 of file gnunet-zonewalk.c.
Referenced by end(), GNUNET_NETWORK_socket_recvfrom_amount(), main(), process_result(), and submit_req().
|
static |
Number of lookups we performed overall.
Definition at line 94 of file gnunet-zonewalk.c.
Referenced by main(), and submit_req().
|
static |
Number of lookups that failed.
Definition at line 99 of file gnunet-zonewalk.c.
Referenced by main(), and process_result().
|
static |
Number of records we found.
Definition at line 104 of file gnunet-zonewalk.c.
Referenced by cache_answers(), GNUNET_GNSRECORD_JSON_from_gnsrecord(), main(), and process_record().
|
static |
Head of DLL of all requests to perform.
Definition at line 109 of file gnunet-zonewalk.c.
Referenced by process_queue(), process_result(), and queue().
|
static |
Tail of DLL of all requests to perform.
Definition at line 114 of file gnunet-zonewalk.c.
Referenced by process_result(), and queue().
|
static |
Main task.
Definition at line 119 of file gnunet-zonewalk.c.
Referenced by add_address_to_uri(), add_without_sets(), automaton_create_proofs(), automaton_destroy_state(), automaton_merge_states(), automaton_state_traverse(), check_dht_p2p_hello(), compute_scalar_product(), connection_ready_cb(), consider_path_cb(), construct_task_graph(), destroy_t_connection(), destroy_task(), destroy_tunnel(), destroy_tunnels_now(), dfa_add_multi_strides_helper(), dfa_compress_paths(), dfa_compress_paths_helper(), dfa_move(), dfa_remove_dead_states(), do_send(), do_shutdown(), driver_add_multiple(), dump_backtrace(), extract_abs_time(), extract_abs_time_nbo(), find_peer_context(), GCCH_channel_incoming_new(), GCP_drop_tunnel(), GCT_2s(), GCT_add_channel(), GCT_add_inbound_connection(), GCT_change_estate(), GCT_connection_lost(), GCT_consider_path(), GCT_count_any_connections(), GCT_count_channels(), GCT_create_tunnel(), GCT_debug(), GCT_destroy_tunnel_now(), GCT_get_destination(), GCT_get_estate(), GCT_handle_encrypted(), GCT_handle_kx(), GCT_iterate_channels(), GCT_iterate_connections(), GCT_remove_channel(), GCT_send(), GCT_send_cancel(), GCT_send_channel_destroy(), GDS_u_connect(), GDS_u_disconnect(), GDS_u_receive(), get_all_tunnels_iterator(), GNUNET_CRYPTO_hash_xorcmp(), GNUNET_DISK_directory_create(), GNUNET_DISK_file_get_identifiers(), GNUNET_DISK_mkdtemp(), GNUNET_FS_meta_data_add_publication_date(), GNUNET_log_setup(), GNUNET_SCHEDULER_add_at_with_priority(), GNUNET_SCHEDULER_add_now(), GNUNET_SCHEDULER_add_select(), GNUNET_SCHEDULER_add_shutdown(), GNUNET_SCHEDULER_add_with_reason_and_priority(), GNUNET_SERVICE_client_drop(), GNUNET_STRINGS_absolute_time_to_string(), GNUNET_TIME_absolute2s(), GNUNET_TIME_absolute_approx_eq(), GNUNET_TIME_get_current_year(), GNUNET_TIME_time_to_year(), GNUNET_TRANSPORT_TESTING_done(), GNUNET_TRANSPORT_TESTING_get_test_plugin_name(), handle_connection_create(), handle_decrypted(), handle_dht_p2p_get(), handle_dht_p2p_hello(), handle_dht_p2p_put(), handle_encrypted(), handle_p2p_estimate(), handle_ping(), handle_plaintext_channel_destroy(), handle_plaintext_channel_open(), handle_plaintext_channel_open_ack(), handle_plaintext_data(), handle_plaintext_data_ack(), handle_plaintext_keepalive(), handle_pong(), helper_read(), helper_write(), init_backtrace(), init_fd_info(), iterate_initial_edge(), lookup_channel(), maintain_connections_cb(), mark_connection_unready(), mktemp_name(), offer_hello(), parse_definitions(), parse_pattern(), process_queue(), progress_cb(), put_task(), REGEX_INTERNAL_dfa_add_multi_strides(), restore_fair(), retry_kx(), rsa_gcd_validate(), run(), scc_tarjan_strongconnect(), send_create(), send_done_cb(), send_kx(), send_kx_auth(), shutdown_if_no_lifeness(), state_add_transition(), state_get_edges(), trigger_transmissions(), try_send_normal_payload(), update_tslots(), and vec_for().