addressmap.h (3036B)
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 addressmap.h 9 * @brief Header for addressmap.c 10 **/ 11 12 #ifndef TOR_ADDRESSMAP_H 13 #define TOR_ADDRESSMAP_H 14 15 #include "lib/testsupport/testsupport.h" 16 17 void addressmap_init(void); 18 void addressmap_clear_excluded_trackexithosts(const or_options_t *options); 19 void addressmap_clear_invalid_automaps(const or_options_t *options); 20 void addressmap_clean(time_t now); 21 void addressmap_clear_configured(void); 22 void addressmap_clear_transient(void); 23 void addressmap_free_all(void); 24 #define AMR_FLAG_USE_IPV4_DNS (1u<<0) 25 #define AMR_FLAG_USE_IPV6_DNS (1u<<1) 26 #define AMR_FLAG_USE_MAPADDRESS (1u<<2) 27 #define AMR_FLAG_USE_AUTOMAP (1u<<3) 28 #define AMR_FLAG_USE_TRACKEXIT (1u<<4) 29 int addressmap_rewrite(char *address, size_t maxlen, unsigned flags, 30 time_t *expires_out, 31 addressmap_entry_source_t *exit_source_out); 32 int addressmap_rewrite_reverse(char *address, size_t maxlen, unsigned flags, 33 time_t *expires_out); 34 int addressmap_have_mapping(const char *address, int update_timeout); 35 36 void addressmap_register(const char *address, char *new_address, 37 time_t expires, addressmap_entry_source_t source, 38 const int address_wildcard, 39 const int new_address_wildcard, uint64_t stream_id); 40 int parse_virtual_addr_network(const char *val, 41 sa_family_t family, int validate_only, 42 char **msg); 43 int client_dns_incr_failures(const char *address); 44 void client_dns_clear_failures(const char *address); 45 void client_dns_set_addressmap(entry_connection_t *for_conn, 46 const char *address, const tor_addr_t *val, 47 const char *exitname, int ttl); 48 const char *addressmap_register_virtual_address(int type, char *new_address); 49 void addressmap_get_mappings(smartlist_t *sl, time_t min_expires, 50 time_t max_expires, int want_expiry); 51 int address_is_in_virtual_range(const char *addr); 52 void clear_trackexithost_mappings(const char *exitname); 53 void client_dns_set_reverse_addressmap(entry_connection_t *for_conn, 54 const char *address, const char *v, 55 const char *exitname, int ttl); 56 int addressmap_address_should_automap(const char *address, 57 const or_options_t *options); 58 59 #ifdef ADDRESSMAP_PRIVATE 60 typedef struct virtual_addr_conf_t { 61 tor_addr_t addr; 62 maskbits_t bits; 63 } virtual_addr_conf_t; 64 65 STATIC void get_random_virtual_addr(const virtual_addr_conf_t *conf, 66 tor_addr_t *addr_out); 67 #endif /* defined(ADDRESSMAP_PRIVATE) */ 68 69 #endif /* !defined(TOR_ADDRESSMAP_H) */