bridges.h (3699B)
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 bridges.h 9 * \brief Header file for circuitbuild.c. 10 **/ 11 12 #ifndef TOR_BRIDGES_H 13 #define TOR_BRIDGES_H 14 15 struct bridge_line_t; 16 struct ed25519_public_key_t; 17 18 /* Opaque handle to a configured bridge */ 19 typedef struct bridge_info_t bridge_info_t; 20 21 void mark_bridge_list(void); 22 void sweep_bridge_list(void); 23 const smartlist_t *bridge_list_get(void); 24 const uint8_t *bridge_get_rsa_id_digest(const bridge_info_t *bridge); 25 const tor_addr_port_t * bridge_get_addr_port(const bridge_info_t *bridge); 26 const char *bridget_get_transport_name(const bridge_info_t *bridge); 27 bool bridge_has_invalid_transport(const bridge_info_t *bridge); 28 bridge_info_t *get_configured_bridge_by_addr_port_digest( 29 const tor_addr_t *addr, 30 uint16_t port, 31 const char *digest); 32 bridge_info_t *get_configured_bridge_by_exact_addr_port_digest( 33 const tor_addr_t *addr, 34 uint16_t port, 35 const char *digest); 36 37 int addr_is_a_configured_bridge(const tor_addr_t *addr, uint16_t port, 38 const char *digest); 39 int extend_info_is_a_configured_bridge(const extend_info_t *ei); 40 int routerinfo_is_a_configured_bridge(const routerinfo_t *ri); 41 int node_is_a_configured_bridge(const node_t *node); 42 void learned_router_identity(const tor_addr_t *addr, uint16_t port, 43 const char *digest, 44 const struct ed25519_public_key_t *ed_id); 45 46 void bridge_add_from_config(struct bridge_line_t *bridge_line); 47 void retry_bridge_descriptor_fetch_directly(const char *digest); 48 void fetch_bridge_descriptors(const or_options_t *options, time_t now); 49 void learned_bridge_descriptor(routerinfo_t *ri, 50 int from_cache, int desc_is_new); 51 const smartlist_t *get_socks_args_by_bridge_addrport(const tor_addr_t *addr, 52 uint16_t port); 53 54 int any_bridges_dont_support_microdescriptors(void); 55 56 const char *find_transport_name_by_bridge_addrport(const tor_addr_t *addr, 57 uint16_t port); 58 struct transport_t; 59 int get_transport_by_bridge_addrport(const tor_addr_t *addr, uint16_t port, 60 const struct transport_t **transport); 61 62 MOCK_DECL(int, transport_is_needed, (const char *transport_name)); 63 int validate_pluggable_transports_config(void); 64 65 MOCK_DECL(smartlist_t *, list_bridge_identities, (void)); 66 MOCK_DECL(download_status_t *, get_bridge_dl_status_by_id, 67 (const char *digest)); 68 69 void bridges_free_all(void); 70 bool conflux_can_exclude_used_bridges(void); 71 72 #ifdef TOR_BRIDGES_PRIVATE 73 STATIC void clear_bridge_list(void); 74 STATIC bridge_info_t *find_bridge_by_digest(const char *digest); 75 STATIC bridge_info_t *get_configured_bridge_by_orports_digest( 76 const char *digest, 77 const smartlist_t *orports); 78 STATIC void bridge_resolve_conflicts(const tor_addr_t *addr, 79 uint16_t port, 80 const char *digest, 81 const char *transport_name); 82 #endif /* defined(TOR_BRIDGES_PRIVATE) */ 83 84 #endif /* !defined(TOR_BRIDGES_H) */