dns.h (3349B)
1 /* Copyright (c) 2001 Matej Pfajfar. 2 * Copyright (c) 2001-2004, Roger Dingledine. 3 * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson. 4 * Copyright (c) 2007-2021, The Tor Project, Inc. */ 5 /* See LICENSE for licensing information */ 6 7 /** 8 * \file dns.h 9 * \brief Header file for dns.c. 10 **/ 11 12 #ifndef TOR_DNS_H 13 #define TOR_DNS_H 14 15 #ifdef HAVE_MODULE_RELAY 16 17 int dns_init(void); 18 int has_dns_init_failed(void); 19 int dns_reset(void); 20 void connection_dns_remove(edge_connection_t *conn); 21 void assert_connection_edge_not_dns_pending(edge_connection_t *conn); 22 int dns_resolve(edge_connection_t *exitconn); 23 void dns_send_resolved_error_cell(edge_connection_t *conn, 24 uint8_t answer_type); 25 int dns_seems_to_be_broken(void); 26 int dns_seems_to_be_broken_for_ipv6(void); 27 void dns_reset_correctness_checks(void); 28 size_t dns_cache_total_allocation(void); 29 void dump_dns_mem_usage(int severity); 30 size_t dns_cache_handle_oom(time_t now, size_t min_remove_bytes); 31 void dns_new_consensus_params(const networkstatus_t *ns); 32 33 /* These functions are only used within the feature/relay module, and don't 34 * need stubs. */ 35 void dns_free_all(void); 36 void dns_launch_correctness_checks(void); 37 38 #else /* !defined(HAVE_MODULE_RELAY) */ 39 40 #define dns_init() (0) 41 #define dns_send_resolved_error_cell(conn, answer_type) \ 42 ((void)(conn), (void)(answer_type)) 43 #define dns_seems_to_be_broken() (0) 44 #define has_dns_init_failed() (0) 45 #define dns_cache_total_allocation() (0) 46 47 #define dns_reset_correctness_checks() STMT_NIL 48 49 #define assert_connection_edge_not_dns_pending(conn) \ 50 ((void)(conn)) 51 #define dump_dns_mem_usage(severity)\ 52 ((void)(severity)) 53 #define dns_cache_handle_oom(now, bytes) \ 54 ((void)(now), (void)(bytes), 0) 55 #define dns_new_consensus_params(ns) \ 56 ((void) ns) 57 58 #define connection_dns_remove(conn) \ 59 STMT_BEGIN \ 60 (void)(conn); \ 61 tor_assert_nonfatal_unreached(); \ 62 STMT_END 63 64 static inline int 65 dns_reset(void) 66 { 67 return 0; 68 } 69 static inline int 70 dns_resolve(edge_connection_t *exitconn) 71 { 72 (void)exitconn; 73 tor_assert_nonfatal_unreached(); 74 return -1; 75 } 76 77 #endif /* defined(HAVE_MODULE_RELAY) */ 78 79 #ifdef DNS_PRIVATE 80 #include "feature/relay/dns_structs.h" 81 82 size_t number_of_configured_nameservers(void); 83 #ifdef HAVE_EVDNS_BASE_GET_NAMESERVER_ADDR 84 tor_addr_t *configured_nameserver_address(const size_t idx); 85 #endif 86 87 MOCK_DECL(STATIC void,dns_cancel_pending_resolve,(const char *question)); 88 MOCK_DECL(STATIC int,dns_resolve_impl,(edge_connection_t *exitconn, 89 int is_resolve,or_circuit_t *oncirc, char **hostname_out, 90 int *made_connection_pending_out, cached_resolve_t **resolve_out)); 91 92 MOCK_DECL(STATIC void,send_resolved_cell,(edge_connection_t *conn, 93 uint8_t answer_type,const cached_resolve_t *resolved)); 94 95 MOCK_DECL(STATIC void,send_resolved_hostname_cell,(edge_connection_t *conn, 96 const char *hostname)); 97 98 cached_resolve_t *dns_get_cache_entry(cached_resolve_t *query); 99 void dns_insert_cache_entry(cached_resolve_t *new_entry); 100 101 MOCK_DECL(STATIC int, 102 set_exitconn_info_from_resolve,(edge_connection_t *exitconn, 103 const cached_resolve_t *resolve, 104 char **hostname_out)); 105 106 MOCK_DECL(STATIC int, 107 launch_resolve,(cached_resolve_t *resolve)); 108 109 #endif /* defined(DNS_PRIVATE) */ 110 111 #endif /* !defined(TOR_DNS_H) */