tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

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) */