Tor  0.4.5.0-alpha-dev
resolve_addr.h
Go to the documentation of this file.
1 /* Copyright (c) 2020, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
3 
4 /**
5  * \file resolve_addr.h
6  * \brief Header file for resolve_addr.c.
7  **/
8 
9 #ifndef TOR_CONFIG_RESOLVE_ADDR_H
10 #define TOR_CONFIG_RESOLVE_ADDR_H
11 
12 #include "app/config/config.h"
14 
16 
17 /** Method used to resolved an address. In other words, how was the address
18  * discovered by tor. */
19 typedef enum {
20  /* Default value. Indiate that no method found the address. */
21  RESOLVED_ADDR_NONE = 0,
22  /* Found from the "Address" configuration option. */
23  RESOLVED_ADDR_CONFIGURED = 1,
24  /* Found from the "ORPort" configuration option. */
25  RESOLVED_ADDR_CONFIGURED_ORPORT = 2,
26  /* Found by resolving the local hostname. */
27  RESOLVED_ADDR_GETHOSTNAME = 3,
28  /* Found by querying the local interface(s). */
29  RESOLVED_ADDR_INTERFACE = 4,
30  /* Found by resolving the hostname from the Address configuration option. */
31  RESOLVED_ADDR_RESOLVED = 5,
33 
34 const char *resolved_addr_method_to_str(const resolved_addr_method_t method);
35 
36 #define get_orport_addr(family) \
37  (portconf_get_first_advertised_addr(CONN_TYPE_OR_LISTENER, family))
38 
39 bool find_my_address(const or_options_t *options, int family,
40  int warn_severity, tor_addr_t *addr_out,
41  resolved_addr_method_t *method_out, char **hostname_out);
42 
43 void resolved_addr_get_last(int family, tor_addr_t *addr_out);
44 void resolved_addr_reset_last(int family);
45 void resolved_addr_set_last(const tor_addr_t *addr,
46  const resolved_addr_method_t method_used,
47  const char *hostname_used);
48 
49 void resolved_addr_get_suggested(int family, tor_addr_t *addr_out);
50 void resolved_addr_set_suggested(const tor_addr_t *addr);
51 
52 bool resolved_addr_is_configured(int family);
53 
54 MOCK_DECL(bool, is_local_to_resolve_addr, (const tor_addr_t *addr));
55 
56 #ifdef RESOLVE_ADDR_PRIVATE
57 
58 #ifdef TOR_UNIT_TESTS
59 
60 void resolve_addr_reset_suggested(int family);
61 
62 #endif /* TOR_UNIT_TESTS */
63 
64 #endif /* RESOLVE_ADDR_PRIVATE */
65 
66 #endif /* TOR_CONFIG_RESOLVE_ADDR_H */
67 
resolved_addr_reset_last
void resolved_addr_reset_last(int family)
Definition: resolve_addr.c:151
resolved_addr_method_to_str
const char * resolved_addr_method_to_str(const resolved_addr_method_t method)
Definition: resolve_addr.c:81
tor_addr_t
Definition: address.h:69
or_options_st.h
The or_options_t structure, which represents Tor's configuration.
is_local_to_resolve_addr
bool is_local_to_resolve_addr(const tor_addr_t *addr)
: Return true iff the given addr is judged to be local to our resolved address.
Definition: resolve_addr.c:787
resolved_addr_set_last
void resolved_addr_set_last(const tor_addr_t *addr, const resolved_addr_method_t method_used, const char *hostname_used)
Set the last resolved address cache using the given address.
Definition: resolve_addr.c:529
resolved_addr_set_suggested
void resolved_addr_set_suggested(const tor_addr_t *addr)
Definition: resolve_addr.c:127
resolved_addr_method_t
resolved_addr_method_t
Definition: resolve_addr.h:19
resolved_addr_get_suggested
void resolved_addr_get_suggested(int family, tor_addr_t *addr_out)
Definition: resolve_addr.c:119
resolved_addr_get_last
void resolved_addr_get_last(int family, tor_addr_t *addr_out)
Definition: resolve_addr.c:142
resolved_addr_is_configured
bool resolved_addr_is_configured(int family)
Definition: resolve_addr.c:109
MOCK_DECL
#define MOCK_DECL(rv, funcname, arglist)
Definition: testsupport.h:127
find_my_address
bool find_my_address(const or_options_t *options, int family, int warn_severity, tor_addr_t *addr_out, resolved_addr_method_t *method_out, char **hostname_out)
Attempt to find our IP address that can be used as our external reachable address.
Definition: resolve_addr.c:695
connection.h
Header file for connection.c.
config.h
Header file for config.c.
or_options_t
Definition: or_options_st.h:64