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-2013, The Tor Project, Inc. */
5 /* See LICENSE for licensing information */
7 #ifndef TOR_ADDRESSMAP_H
8 #define TOR_ADDRESSMAP_H
10 #include "testsupport.h"
12 void addressmap_init(void);
13 void addressmap_clear_excluded_trackexithosts(const or_options_t
*options
);
14 void addressmap_clear_invalid_automaps(const or_options_t
*options
);
15 void addressmap_clean(time_t now
);
16 void addressmap_clear_configured(void);
17 void addressmap_clear_transient(void);
18 void addressmap_free_all(void);
19 #define AMR_FLAG_USE_IPV4_DNS (1u<<0)
20 #define AMR_FLAG_USE_IPV6_DNS (1u<<1)
21 int addressmap_rewrite(char *address
, size_t maxlen
, unsigned flags
,
23 addressmap_entry_source_t
*exit_source_out
);
24 int addressmap_rewrite_reverse(char *address
, size_t maxlen
, unsigned flags
,
26 int addressmap_have_mapping(const char *address
, int update_timeout
);
28 void addressmap_register(const char *address
, char *new_address
,
29 time_t expires
, addressmap_entry_source_t source
,
30 const int address_wildcard
,
31 const int new_address_wildcard
);
32 int parse_virtual_addr_network(const char *val
,
33 sa_family_t family
, int validate_only
,
35 int client_dns_incr_failures(const char *address
);
36 void client_dns_clear_failures(const char *address
);
37 void client_dns_set_addressmap(entry_connection_t
*for_conn
,
38 const char *address
, const tor_addr_t
*val
,
39 const char *exitname
, int ttl
);
40 const char *addressmap_register_virtual_address(int type
, char *new_address
);
41 void addressmap_get_mappings(smartlist_t
*sl
, time_t min_expires
,
42 time_t max_expires
, int want_expiry
);
43 int address_is_in_virtual_range(const char *addr
);
44 void clear_trackexithost_mappings(const char *exitname
);
45 void client_dns_set_reverse_addressmap(entry_connection_t
*for_conn
,
46 const char *address
, const char *v
,
47 const char *exitname
, int ttl
);
48 int addressmap_address_should_automap(const char *address
,
49 const or_options_t
*options
);
51 #ifdef ADDRESSMAP_PRIVATE
52 typedef struct virtual_addr_conf_t
{
55 } virtual_addr_conf_t
;
57 STATIC
void get_random_virtual_addr(const virtual_addr_conf_t
*conf
,
58 tor_addr_t
*addr_out
);