circuitbuild.h 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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-2010, The Tor Project, Inc. */
  5. /* See LICENSE for licensing information */
  6. /**
  7. * \file circuitbuild.h
  8. * \brief Header file for circuitbuild.c.
  9. **/
  10. #ifndef _TOR_CIRCUITBUILD_H
  11. #define _TOR_CIRCUITBUILD_H
  12. char *circuit_list_path(origin_circuit_t *circ, int verbose);
  13. char *circuit_list_path_for_controller(origin_circuit_t *circ);
  14. void circuit_log_path(int severity, unsigned int domain,
  15. origin_circuit_t *circ);
  16. void circuit_rep_hist_note_result(origin_circuit_t *circ);
  17. origin_circuit_t *origin_circuit_init(uint8_t purpose, int flags);
  18. origin_circuit_t *circuit_establish_circuit(uint8_t purpose,
  19. extend_info_t *exit,
  20. int flags);
  21. int circuit_handle_first_hop(origin_circuit_t *circ);
  22. void circuit_n_conn_done(or_connection_t *or_conn, int status);
  23. int inform_testing_reachability(void);
  24. int circuit_timeout_want_to_count_circ(origin_circuit_t *circ);
  25. int circuit_send_next_onion_skin(origin_circuit_t *circ);
  26. void circuit_note_clock_jumped(int seconds_elapsed);
  27. int circuit_extend(cell_t *cell, circuit_t *circ);
  28. int circuit_init_cpath_crypto(crypt_path_t *cpath, const char *key_data,
  29. int reverse);
  30. int circuit_finish_handshake(origin_circuit_t *circ, uint8_t cell_type,
  31. const uint8_t *reply);
  32. int circuit_truncated(origin_circuit_t *circ, crypt_path_t *layer);
  33. int onionskin_answer(or_circuit_t *circ, uint8_t cell_type,
  34. const char *payload, const char *keys);
  35. int circuit_all_predicted_ports_handled(time_t now, int *need_uptime,
  36. int *need_capacity);
  37. int circuit_append_new_exit(origin_circuit_t *circ, extend_info_t *info);
  38. int circuit_extend_to_new_exit(origin_circuit_t *circ, extend_info_t *info);
  39. void onion_append_to_cpath(crypt_path_t **head_ptr, crypt_path_t *new_hop);
  40. extend_info_t *extend_info_alloc(const char *nickname, const char *digest,
  41. crypto_pk_env_t *onion_key,
  42. const tor_addr_t *addr, uint16_t port);
  43. extend_info_t *extend_info_from_router(routerinfo_t *r);
  44. extend_info_t *extend_info_dup(extend_info_t *info);
  45. void extend_info_free(extend_info_t *info);
  46. routerinfo_t *build_state_get_exit_router(cpath_build_state_t *state);
  47. const char *build_state_get_exit_nickname(cpath_build_state_t *state);
  48. void entry_guards_compute_status(or_options_t *options, time_t now);
  49. int entry_guard_register_connect_status(const char *digest, int succeeded,
  50. int mark_relay_status, time_t now);
  51. void entry_nodes_should_be_added(void);
  52. int entry_list_is_constrained(or_options_t *options);
  53. routerinfo_t *choose_random_entry(cpath_build_state_t *state);
  54. int entry_guards_parse_state(or_state_t *state, int set, char **msg);
  55. void entry_guards_update_state(or_state_t *state);
  56. int getinfo_helper_entry_guards(control_connection_t *conn,
  57. const char *question, char **answer,
  58. const char **errmsg);
  59. void clear_bridge_list(void);
  60. int routerinfo_is_a_configured_bridge(routerinfo_t *ri);
  61. void
  62. learned_router_identity(tor_addr_t *addr, uint16_t port, const char *digest);
  63. void bridge_add_from_config(const tor_addr_t *addr, uint16_t port,
  64. char *digest);
  65. void retry_bridge_descriptor_fetch_directly(const char *digest);
  66. void fetch_bridge_descriptors(or_options_t *options, time_t now);
  67. void learned_bridge_descriptor(routerinfo_t *ri, int from_cache);
  68. int any_bridge_descriptors_known(void);
  69. int any_pending_bridge_descriptor_fetches(void);
  70. int entries_known_but_down(or_options_t *options);
  71. void entries_retry_all(or_options_t *options);
  72. void entry_guards_free_all(void);
  73. extern circuit_build_times_t circ_times;
  74. int circuit_build_times_enough_to_compute(circuit_build_times_t *cbt);
  75. void circuit_build_times_update_state(circuit_build_times_t *cbt,
  76. or_state_t *state);
  77. int circuit_build_times_parse_state(circuit_build_times_t *cbt,
  78. or_state_t *state);
  79. void circuit_build_times_count_timeout(circuit_build_times_t *cbt,
  80. int did_onehop);
  81. int circuit_build_times_count_close(circuit_build_times_t *cbt,
  82. int did_onehop, time_t start_time);
  83. void circuit_build_times_set_timeout(circuit_build_times_t *cbt);
  84. int circuit_build_times_add_time(circuit_build_times_t *cbt,
  85. build_time_t time);
  86. int circuit_build_times_needs_circuits(circuit_build_times_t *cbt);
  87. int circuit_build_times_needs_circuits_now(circuit_build_times_t *cbt);
  88. void circuit_build_times_init(circuit_build_times_t *cbt);
  89. void circuit_build_times_new_consensus_params(circuit_build_times_t *cbt,
  90. networkstatus_t *ns);
  91. double circuit_build_times_timeout_rate(const circuit_build_times_t *cbt);
  92. double circuit_build_times_close_rate(const circuit_build_times_t *cbt);
  93. #ifdef CIRCUIT_PRIVATE
  94. double circuit_build_times_calculate_timeout(circuit_build_times_t *cbt,
  95. double quantile);
  96. build_time_t circuit_build_times_generate_sample(circuit_build_times_t *cbt,
  97. double q_lo, double q_hi);
  98. void circuit_build_times_initial_alpha(circuit_build_times_t *cbt,
  99. double quantile, double time_ms);
  100. int circuit_build_times_update_alpha(circuit_build_times_t *cbt);
  101. double circuit_build_times_cdf(circuit_build_times_t *cbt, double x);
  102. void circuitbuild_running_unit_tests(void);
  103. void circuit_build_times_reset(circuit_build_times_t *cbt);
  104. /* Network liveness functions */
  105. int circuit_build_times_network_check_changed(circuit_build_times_t *cbt);
  106. #endif
  107. /* Network liveness functions */
  108. void circuit_build_times_network_is_live(circuit_build_times_t *cbt);
  109. int circuit_build_times_network_check_live(circuit_build_times_t *cbt);
  110. void circuit_build_times_network_circ_success(circuit_build_times_t *cbt);
  111. #endif