mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Split all controller events code into a new control_events.c
Also, split the formatting code shared by control.c and control_events.c into controller_fmt.c.
This commit is contained in:
@@ -59,13 +59,13 @@ problem function-size /src/core/or/relay.c:connection_edge_process_relay_cell_no
|
||||
problem function-size /src/core/or/relay.c:connection_edge_process_relay_cell() 520
|
||||
problem function-size /src/core/or/relay.c:connection_edge_package_raw_inbuf() 130
|
||||
problem function-size /src/core/or/relay.c:circuit_resume_edge_reading_helper() 148
|
||||
problem file-size /src/core/mainloop/mainloop.c 3050
|
||||
problem include-count /src/core/mainloop/mainloop.c 65
|
||||
problem file-size /src/core/mainloop/mainloop.c 3051
|
||||
problem include-count /src/core/mainloop/mainloop.c 66
|
||||
problem function-size /src/core/mainloop/mainloop.c:conn_close_if_marked() 108
|
||||
problem function-size /src/core/mainloop/mainloop.c:run_connection_housekeeping() 123
|
||||
problem function-size /src/core/mainloop/mainloop.c:CALLBACK() 116
|
||||
problem file-size /src/core/mainloop/connection.c 5547
|
||||
problem include-count /src/core/mainloop/connection.c 60
|
||||
problem file-size /src/core/mainloop/connection.c 5548
|
||||
problem include-count /src/core/mainloop/connection.c 61
|
||||
problem function-size /src/core/mainloop/connection.c:connection_free_minimal() 184
|
||||
problem function-size /src/core/mainloop/connection.c:connection_listener_new() 328
|
||||
problem function-size /src/core/mainloop/connection.c:connection_handle_listener_read() 161
|
||||
@@ -79,8 +79,8 @@ problem function-size /src/core/mainloop/connection.c:connection_handle_write_im
|
||||
problem function-size /src/core/mainloop/connection.c:assert_connection_ok() 143
|
||||
problem function-size /src/app/config/confparse.c:config_assign_value() 205
|
||||
problem function-size /src/app/config/confparse.c:config_get_assigned_option() 129
|
||||
problem file-size /src/app/config/config.c 8488
|
||||
problem include-count /src/app/config/config.c 84
|
||||
problem file-size /src/app/config/config.c 8489
|
||||
problem include-count /src/app/config/config.c 85
|
||||
problem function-size /src/app/config/config.c:options_act_reversible() 296
|
||||
problem function-size /src/app/config/config.c:options_act() 588
|
||||
problem function-size /src/app/config/config.c:resolve_my_address() 192
|
||||
@@ -96,7 +96,7 @@ problem function-size /src/app/config/config.c:parse_port_config() 452
|
||||
problem function-size /src/app/config/config.c:parse_ports() 170
|
||||
problem function-size /src/app/config/config.c:getinfo_helper_config() 116
|
||||
problem function-size /src/app/main/ntmain.c:nt_service_install() 125
|
||||
problem include-count /src/app/main/main.c 83
|
||||
problem include-count /src/app/main/main.c 84
|
||||
problem function-size /src/app/main/main.c:dumpstats() 102
|
||||
problem function-size /src/app/main/main.c:tor_init() 136
|
||||
problem function-size /src/app/main/main.c:sandbox_init_filter() 291
|
||||
@@ -110,7 +110,7 @@ problem function-size /src/feature/keymgt/loadkey.c:ed_key_init_from_file() 333
|
||||
problem function-size /src/feature/dircommon/consdiff.c:gen_ed_diff() 204
|
||||
problem function-size /src/feature/dircommon/consdiff.c:apply_ed_diff() 159
|
||||
problem file-size /src/feature/control/control.c 7592
|
||||
problem include-count /src/feature/control/control.c 83
|
||||
problem include-count /src/feature/control/control.c 90
|
||||
problem function-size /src/feature/control/control.c:handle_control_authenticate() 188
|
||||
problem function-size /src/feature/control/control.c:getinfo_helper_misc() 109
|
||||
problem function-size /src/feature/control/control.c:getinfo_helper_dir() 304
|
||||
@@ -122,7 +122,7 @@ problem function-size /src/feature/control/control.c:handle_control_hspost() 117
|
||||
problem function-size /src/feature/control/control.c:handle_control_add_onion() 293
|
||||
problem function-size /src/feature/control/control.c:add_onion_helper_keyarg() 125
|
||||
problem function-size /src/feature/control/control.c:connection_control_process_inbuf() 239
|
||||
problem function-size /src/feature/control/control.c:control_event_stream_status() 119
|
||||
problem function-size /src/feature/control/control_events.c:control_event_stream_status() 119
|
||||
problem function-size /src/feature/stats/rephist.c:rep_hist_load_mtbf_data() 185
|
||||
problem function-size /src/feature/stats/rephist.c:rep_hist_format_exit_stats() 148
|
||||
problem function-size /src/feature/dircache/consdiffmgr.c:consdiffmgr_cleanup() 115
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
#include "feature/client/entrynodes.h"
|
||||
#include "feature/client/transports.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dirauth/bwauth.h"
|
||||
#include "feature/dirauth/guardfraction.h"
|
||||
#include "feature/dircache/consdiffmgr.h"
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
#include "core/mainloop/mainloop.h"
|
||||
#include "core/mainloop/netstatus.h"
|
||||
#include "core/mainloop/connection.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/client/entrynodes.h"
|
||||
#include "feature/hibernate/hibernate.h"
|
||||
#include "feature/stats/rephist.h"
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
#include "feature/client/entrynodes.h"
|
||||
#include "feature/client/transports.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dirauth/bwauth.h"
|
||||
#include "feature/dirauth/keypin.h"
|
||||
#include "feature/dirauth/process_descs.h"
|
||||
|
||||
@@ -71,6 +71,8 @@ LIBTOR_APP_A_SOURCES = \
|
||||
src/feature/control/btrack_orconn_maps.c \
|
||||
src/feature/control/control.c \
|
||||
src/feature/control/control_bootstrap.c \
|
||||
src/feature/control/control_events.c \
|
||||
src/feature/control/control_fmt.c \
|
||||
src/feature/control/fmt_serverstatus.c \
|
||||
src/feature/control/getinfo_geoip.c \
|
||||
src/feature/dirauth/keypin.c \
|
||||
@@ -288,6 +290,8 @@ noinst_HEADERS += \
|
||||
src/feature/control/btrack_sys.h \
|
||||
src/feature/control/control.h \
|
||||
src/feature/control/control_connection_st.h \
|
||||
src/feature/control/control_events.h \
|
||||
src/feature/control/control_fmt.h \
|
||||
src/feature/control/fmt_serverstatus.h \
|
||||
src/feature/control/getinfo_geoip.h \
|
||||
src/feature/dirauth/authmode.h \
|
||||
|
||||
@@ -88,6 +88,7 @@
|
||||
#include "feature/client/entrynodes.h"
|
||||
#include "feature/client/transports.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dirauth/authmode.h"
|
||||
#include "feature/dircache/dirserv.h"
|
||||
#include "feature/dircommon/directory.h"
|
||||
|
||||
@@ -73,6 +73,7 @@
|
||||
#include "feature/client/entrynodes.h"
|
||||
#include "feature/client/transports.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dirauth/authmode.h"
|
||||
#include "feature/dirauth/reachability.h"
|
||||
#include "feature/dircache/consdiffmgr.h"
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
#include "feature/client/circpathbias.h"
|
||||
#include "feature/client/entrynodes.h"
|
||||
#include "feature/client/transports.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dircommon/directory.h"
|
||||
#include "feature/nodelist/describe.h"
|
||||
#include "feature/nodelist/microdesc.h"
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
#include "app/config/config.h"
|
||||
#include "core/or/connection_edge.h"
|
||||
#include "core/or/connection_or.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "lib/crypt_ops/crypto_rand.h"
|
||||
#include "lib/crypt_ops/crypto_util.h"
|
||||
#include "lib/crypt_ops/crypto_dh.h"
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
#include "core/or/circuitstats.h"
|
||||
#include "app/config/config.h"
|
||||
#include "app/config/confparse.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "lib/crypt_ops/crypto_rand.h"
|
||||
#include "core/mainloop/mainloop.h"
|
||||
#include "feature/nodelist/networkstatus.h"
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
#include "feature/client/bridges.h"
|
||||
#include "feature/client/circpathbias.h"
|
||||
#include "feature/client/entrynodes.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dircommon/directory.h"
|
||||
#include "feature/hs/hs_circuit.h"
|
||||
#include "feature/hs/hs_client.h"
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
#include "core/or/dos.h"
|
||||
#include "core/or/onion.h"
|
||||
#include "core/or/relay.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/hibernate/hibernate.h"
|
||||
#include "feature/nodelist/describe.h"
|
||||
#include "feature/nodelist/nodelist.h"
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
#include "feature/client/addressmap.h"
|
||||
#include "feature/client/circpathbias.h"
|
||||
#include "feature/client/dnsserv.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dircache/dirserv.h"
|
||||
#include "feature/dircommon/directory.h"
|
||||
#include "feature/hibernate/hibernate.h"
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
#include "app/config/config.h"
|
||||
#include "core/mainloop/connection.h"
|
||||
#include "core/or/connection_or.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "lib/crypt_ops/crypto_rand.h"
|
||||
#include "lib/crypt_ops/crypto_util.h"
|
||||
#include "feature/dirauth/reachability.h"
|
||||
|
||||
+1
-1
@@ -61,7 +61,7 @@
|
||||
#include "core/mainloop/connection.h"
|
||||
#include "core/or/connection_edge.h"
|
||||
#include "core/or/connection_or.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "lib/crypt_ops/crypto_rand.h"
|
||||
#include "lib/crypt_ops/crypto_util.h"
|
||||
#include "feature/dircommon/directory.h"
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include "feature/client/addressmap.h"
|
||||
#include "lib/buf/buffers.h"
|
||||
#include "core/mainloop/connection.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "app/config/config.h"
|
||||
#include "lib/crypt_ops/crypto_util.h"
|
||||
#include "feature/relay/ext_orport.h"
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
#include "core/or/circuituse.h"
|
||||
#include "app/config/config.h"
|
||||
#include "core/or/connection_edge.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/relay/dns.h"
|
||||
#include "feature/nodelist/nodelist.h"
|
||||
#include "feature/nodelist/routerset.h"
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#include "app/config/config.h"
|
||||
#include "core/mainloop/connection.h"
|
||||
#include "core/or/connection_edge.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "core/mainloop/mainloop.h"
|
||||
#include "core/mainloop/netstatus.h"
|
||||
#include "core/or/policies.h"
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
#include "feature/client/circpathbias.h"
|
||||
#include "feature/client/entrynodes.h"
|
||||
#include "feature/client/transports.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dircommon/directory.h"
|
||||
#include "feature/nodelist/describe.h"
|
||||
#include "feature/nodelist/microdesc.h"
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
#include "app/config/statefile.h"
|
||||
#include "core/or/connection_or.h"
|
||||
#include "feature/relay/ext_orport.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "lib/encoding/confline.h"
|
||||
#include "lib/encoding/kvline.h"
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#include "core/or/orconn_event.h"
|
||||
#include "feature/control/btrack_orconn.h"
|
||||
#include "feature/control/btrack_orconn_cevent.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
|
||||
/**
|
||||
* Have we completed our first OR connection?
|
||||
|
||||
+7
-2519
File diff suppressed because it is too large
Load Diff
@@ -12,84 +12,6 @@
|
||||
#ifndef TOR_CONTROL_H
|
||||
#define TOR_CONTROL_H
|
||||
|
||||
#include "core/or/ocirc_event.h"
|
||||
|
||||
/** Used to indicate the type of a CIRC_MINOR event passed to the controller.
|
||||
* The various types are defined in control-spec.txt . */
|
||||
typedef enum circuit_status_minor_event_t {
|
||||
CIRC_MINOR_EVENT_PURPOSE_CHANGED,
|
||||
CIRC_MINOR_EVENT_CANNIBALIZED,
|
||||
} circuit_status_minor_event_t;
|
||||
|
||||
#include "core/or/orconn_event.h"
|
||||
|
||||
/** Used to indicate the type of a stream event passed to the controller.
|
||||
* The various types are defined in control-spec.txt */
|
||||
typedef enum stream_status_event_t {
|
||||
STREAM_EVENT_SENT_CONNECT = 0,
|
||||
STREAM_EVENT_SENT_RESOLVE = 1,
|
||||
STREAM_EVENT_SUCCEEDED = 2,
|
||||
STREAM_EVENT_FAILED = 3,
|
||||
STREAM_EVENT_CLOSED = 4,
|
||||
STREAM_EVENT_NEW = 5,
|
||||
STREAM_EVENT_NEW_RESOLVE = 6,
|
||||
STREAM_EVENT_FAILED_RETRIABLE = 7,
|
||||
STREAM_EVENT_REMAP = 8
|
||||
} stream_status_event_t;
|
||||
|
||||
/** Used to indicate the type of a buildtime event */
|
||||
typedef enum buildtimeout_set_event_t {
|
||||
BUILDTIMEOUT_SET_EVENT_COMPUTED = 0,
|
||||
BUILDTIMEOUT_SET_EVENT_RESET = 1,
|
||||
BUILDTIMEOUT_SET_EVENT_SUSPENDED = 2,
|
||||
BUILDTIMEOUT_SET_EVENT_DISCARD = 3,
|
||||
BUILDTIMEOUT_SET_EVENT_RESUME = 4
|
||||
} buildtimeout_set_event_t;
|
||||
|
||||
/** Enum describing various stages of bootstrapping, for use with controller
|
||||
* bootstrap status events. The values range from 0 to 100. */
|
||||
typedef enum {
|
||||
BOOTSTRAP_STATUS_UNDEF=-1,
|
||||
BOOTSTRAP_STATUS_STARTING=0,
|
||||
|
||||
/* Initial connection to any relay */
|
||||
|
||||
BOOTSTRAP_STATUS_CONN_PT=1,
|
||||
BOOTSTRAP_STATUS_CONN_DONE_PT=2,
|
||||
BOOTSTRAP_STATUS_CONN_PROXY=3,
|
||||
BOOTSTRAP_STATUS_CONN_DONE_PROXY=4,
|
||||
BOOTSTRAP_STATUS_CONN=5,
|
||||
BOOTSTRAP_STATUS_CONN_DONE=10,
|
||||
BOOTSTRAP_STATUS_HANDSHAKE=14,
|
||||
BOOTSTRAP_STATUS_HANDSHAKE_DONE=15,
|
||||
|
||||
/* Loading directory info */
|
||||
|
||||
BOOTSTRAP_STATUS_ONEHOP_CREATE=20,
|
||||
BOOTSTRAP_STATUS_REQUESTING_STATUS=25,
|
||||
BOOTSTRAP_STATUS_LOADING_STATUS=30,
|
||||
BOOTSTRAP_STATUS_LOADING_KEYS=40,
|
||||
BOOTSTRAP_STATUS_REQUESTING_DESCRIPTORS=45,
|
||||
BOOTSTRAP_STATUS_LOADING_DESCRIPTORS=50,
|
||||
BOOTSTRAP_STATUS_ENOUGH_DIRINFO=75,
|
||||
|
||||
/* Connecting to a relay for AP circuits */
|
||||
|
||||
BOOTSTRAP_STATUS_AP_CONN_PT=76,
|
||||
BOOTSTRAP_STATUS_AP_CONN_DONE_PT=77,
|
||||
BOOTSTRAP_STATUS_AP_CONN_PROXY=78,
|
||||
BOOTSTRAP_STATUS_AP_CONN_DONE_PROXY=79,
|
||||
BOOTSTRAP_STATUS_AP_CONN=80,
|
||||
BOOTSTRAP_STATUS_AP_CONN_DONE=85,
|
||||
BOOTSTRAP_STATUS_AP_HANDSHAKE=89,
|
||||
BOOTSTRAP_STATUS_AP_HANDSHAKE_DONE=90,
|
||||
|
||||
/* Creating AP circuits */
|
||||
|
||||
BOOTSTRAP_STATUS_CIRCUIT_CREATE=95,
|
||||
BOOTSTRAP_STATUS_DONE=100
|
||||
} bootstrap_status_t;
|
||||
|
||||
control_connection_t *TO_CONTROL_CONN(connection_t *);
|
||||
|
||||
#define CONTROL_CONN_STATE_MIN_ 1
|
||||
@@ -100,18 +22,6 @@ control_connection_t *TO_CONTROL_CONN(connection_t *);
|
||||
#define CONTROL_CONN_STATE_NEEDAUTH 2
|
||||
#define CONTROL_CONN_STATE_MAX_ 2
|
||||
|
||||
/** Reason for remapping an AP connection's address: we have a cached
|
||||
* answer. */
|
||||
#define REMAP_STREAM_SOURCE_CACHE 1
|
||||
/** Reason for remapping an AP connection's address: the exit node told us an
|
||||
* answer. */
|
||||
#define REMAP_STREAM_SOURCE_EXIT 2
|
||||
|
||||
void control_initialize_event_queue(void);
|
||||
|
||||
void control_update_global_event_mask(void);
|
||||
void control_adjust_event_log_severity(void);
|
||||
|
||||
void control_ports_write_to_file(void);
|
||||
|
||||
/** Log information about the connection <b>conn</b>, protecting it as with
|
||||
@@ -132,65 +42,6 @@ void connection_control_closed(control_connection_t *conn);
|
||||
|
||||
int connection_control_process_inbuf(control_connection_t *conn);
|
||||
|
||||
#define EVENT_NS 0x000F
|
||||
int control_event_is_interesting(int event);
|
||||
|
||||
void control_per_second_events(void);
|
||||
int control_any_per_second_event_enabled(void);
|
||||
|
||||
int control_event_circuit_status(origin_circuit_t *circ,
|
||||
circuit_status_event_t e, int reason);
|
||||
int control_event_circuit_purpose_changed(origin_circuit_t *circ,
|
||||
int old_purpose);
|
||||
int control_event_circuit_cannibalized(origin_circuit_t *circ,
|
||||
int old_purpose,
|
||||
const struct timeval *old_tv_created);
|
||||
int control_event_stream_status(entry_connection_t *conn,
|
||||
stream_status_event_t e,
|
||||
int reason);
|
||||
int control_event_or_conn_status(or_connection_t *conn,
|
||||
or_conn_status_event_t e, int reason);
|
||||
int control_event_bandwidth_used(uint32_t n_read, uint32_t n_written);
|
||||
int control_event_stream_bandwidth(edge_connection_t *edge_conn);
|
||||
int control_event_stream_bandwidth_used(void);
|
||||
int control_event_circ_bandwidth_used(void);
|
||||
int control_event_circ_bandwidth_used_for_circ(origin_circuit_t *ocirc);
|
||||
int control_event_conn_bandwidth(connection_t *conn);
|
||||
int control_event_conn_bandwidth_used(void);
|
||||
int control_event_circuit_cell_stats(void);
|
||||
void control_event_logmsg(int severity, uint32_t domain, const char *msg);
|
||||
void control_event_logmsg_pending(void);
|
||||
int control_event_descriptors_changed(smartlist_t *routers);
|
||||
int control_event_address_mapped(const char *from, const char *to,
|
||||
time_t expires, const char *error,
|
||||
const int cached);
|
||||
int control_event_my_descriptor_changed(void);
|
||||
int control_event_network_liveness_update(int liveness);
|
||||
int control_event_networkstatus_changed(smartlist_t *statuses);
|
||||
|
||||
int control_event_newconsensus(const networkstatus_t *consensus);
|
||||
int control_event_networkstatus_changed_single(const routerstatus_t *rs);
|
||||
int control_event_general_status(int severity, const char *format, ...)
|
||||
CHECK_PRINTF(2,3);
|
||||
int control_event_client_status(int severity, const char *format, ...)
|
||||
CHECK_PRINTF(2,3);
|
||||
int control_event_server_status(int severity, const char *format, ...)
|
||||
CHECK_PRINTF(2,3);
|
||||
|
||||
int control_event_general_error(const char *format, ...)
|
||||
CHECK_PRINTF(1,2);
|
||||
int control_event_client_error(const char *format, ...)
|
||||
CHECK_PRINTF(1,2);
|
||||
int control_event_server_error(const char *format, ...)
|
||||
CHECK_PRINTF(1,2);
|
||||
|
||||
int control_event_guard(const char *nickname, const char *digest,
|
||||
const char *status);
|
||||
int control_event_conf_changed(const smartlist_t *elements);
|
||||
int control_event_buildtimeout_set(buildtimeout_set_event_t type,
|
||||
const char *args);
|
||||
int control_event_signal(uintptr_t signal);
|
||||
|
||||
int init_control_cookie_authentication(int enabled);
|
||||
char *get_controller_cookie_file_name(void);
|
||||
struct config_line_t;
|
||||
@@ -200,176 +51,13 @@ void enable_control_logging(void);
|
||||
|
||||
void monitor_owning_controller_process(const char *process_spec);
|
||||
|
||||
void control_event_bootstrap(bootstrap_status_t status, int progress);
|
||||
MOCK_DECL(void, control_event_bootstrap_prob_or,(const char *warn,
|
||||
int reason,
|
||||
or_connection_t *or_conn));
|
||||
void control_event_boot_dir(bootstrap_status_t status, int progress);
|
||||
void control_event_boot_first_orconn(void);
|
||||
void control_event_bootstrap_problem(const char *warn, const char *reason,
|
||||
const connection_t *conn, int dowarn);
|
||||
char *control_event_boot_last_msg(void);
|
||||
void control_event_bootstrap_reset(void);
|
||||
|
||||
void control_event_clients_seen(const char *controller_str);
|
||||
void control_event_transport_launched(const char *mode,
|
||||
const char *transport_name,
|
||||
tor_addr_t *addr, uint16_t port);
|
||||
void control_event_pt_log(const char *log);
|
||||
void control_event_pt_status(const char *status);
|
||||
const char *rend_auth_type_to_string(rend_auth_type_t auth_type);
|
||||
MOCK_DECL(const char *, node_describe_longname_by_id,(const char *id_digest));
|
||||
void control_event_hs_descriptor_requested(const char *onion_address,
|
||||
rend_auth_type_t auth_type,
|
||||
const char *id_digest,
|
||||
const char *desc_id,
|
||||
const char *hsdir_index);
|
||||
void control_event_hs_descriptor_created(const char *onion_address,
|
||||
const char *desc_id,
|
||||
int replica);
|
||||
void control_event_hs_descriptor_upload(const char *onion_address,
|
||||
const char *desc_id,
|
||||
const char *hs_dir,
|
||||
const char *hsdir_index);
|
||||
void control_event_hs_descriptor_upload_end(const char *action,
|
||||
const char *onion_address,
|
||||
const char *hs_dir,
|
||||
const char *reason);
|
||||
void control_event_hs_descriptor_uploaded(const char *hs_dir,
|
||||
const char *onion_address);
|
||||
/* Hidden service v2 HS_DESC specific. */
|
||||
void control_event_hsv2_descriptor_failed(const rend_data_t *rend_data,
|
||||
const char *id_digest,
|
||||
const char *reason);
|
||||
void control_event_hsv2_descriptor_received(const char *onion_address,
|
||||
const rend_data_t *rend_data,
|
||||
const char *id_digest);
|
||||
/* Hidden service v3 HS_DESC specific. */
|
||||
void control_event_hsv3_descriptor_failed(const char *onion_address,
|
||||
const char *desc_id,
|
||||
const char *hsdir_id_digest,
|
||||
const char *reason);
|
||||
void control_event_hsv3_descriptor_received(const char *onion_address,
|
||||
const char *desc_id,
|
||||
const char *hsdir_id_digest);
|
||||
void control_event_hs_descriptor_upload_failed(const char *hs_dir,
|
||||
const char *onion_address,
|
||||
const char *reason);
|
||||
void control_event_hs_descriptor_content(const char *onion_address,
|
||||
const char *desc_id,
|
||||
const char *hsdir_fp,
|
||||
const char *content);
|
||||
void control_free_all(void);
|
||||
|
||||
#ifdef CONTROL_PRIVATE
|
||||
#include "lib/crypt_ops/crypto_ed25519.h"
|
||||
|
||||
/* Recognized asynchronous event types. It's okay to expand this list
|
||||
* because it is used both as a list of v0 event types, and as indices
|
||||
* into the bitfield to determine which controllers want which events.
|
||||
*/
|
||||
/* This bitfield has no event zero 0x0000 */
|
||||
#define EVENT_MIN_ 0x0001
|
||||
#define EVENT_CIRCUIT_STATUS 0x0001
|
||||
#define EVENT_STREAM_STATUS 0x0002
|
||||
#define EVENT_OR_CONN_STATUS 0x0003
|
||||
#define EVENT_BANDWIDTH_USED 0x0004
|
||||
#define EVENT_CIRCUIT_STATUS_MINOR 0x0005
|
||||
#define EVENT_NEW_DESC 0x0006
|
||||
#define EVENT_DEBUG_MSG 0x0007
|
||||
#define EVENT_INFO_MSG 0x0008
|
||||
#define EVENT_NOTICE_MSG 0x0009
|
||||
#define EVENT_WARN_MSG 0x000A
|
||||
#define EVENT_ERR_MSG 0x000B
|
||||
#define EVENT_ADDRMAP 0x000C
|
||||
/* There was an AUTHDIR_NEWDESCS event, but it no longer exists. We
|
||||
can reclaim 0x000D. */
|
||||
#define EVENT_DESCCHANGED 0x000E
|
||||
/* Exposed above */
|
||||
// #define EVENT_NS 0x000F
|
||||
#define EVENT_STATUS_CLIENT 0x0010
|
||||
#define EVENT_STATUS_SERVER 0x0011
|
||||
#define EVENT_STATUS_GENERAL 0x0012
|
||||
#define EVENT_GUARD 0x0013
|
||||
#define EVENT_STREAM_BANDWIDTH_USED 0x0014
|
||||
#define EVENT_CLIENTS_SEEN 0x0015
|
||||
#define EVENT_NEWCONSENSUS 0x0016
|
||||
#define EVENT_BUILDTIMEOUT_SET 0x0017
|
||||
#define EVENT_GOT_SIGNAL 0x0018
|
||||
#define EVENT_CONF_CHANGED 0x0019
|
||||
#define EVENT_CONN_BW 0x001A
|
||||
#define EVENT_CELL_STATS 0x001B
|
||||
/* UNUSED : 0x001C */
|
||||
#define EVENT_CIRC_BANDWIDTH_USED 0x001D
|
||||
#define EVENT_TRANSPORT_LAUNCHED 0x0020
|
||||
#define EVENT_HS_DESC 0x0021
|
||||
#define EVENT_HS_DESC_CONTENT 0x0022
|
||||
#define EVENT_NETWORK_LIVENESS 0x0023
|
||||
#define EVENT_PT_LOG 0x0024
|
||||
#define EVENT_PT_STATUS 0x0025
|
||||
#define EVENT_MAX_ 0x0025
|
||||
|
||||
/* sizeof(control_connection_t.event_mask) in bits, currently a uint64_t */
|
||||
#define EVENT_CAPACITY_ 0x0040
|
||||
|
||||
/* If EVENT_MAX_ ever hits 0x0040, we need to make the mask into a
|
||||
* different structure, as it can only handle a maximum left shift of 1<<63. */
|
||||
|
||||
#if EVENT_MAX_ >= EVENT_CAPACITY_
|
||||
#error control_connection_t.event_mask has an event greater than its capacity
|
||||
#endif
|
||||
|
||||
#define EVENT_MASK_(e) (((uint64_t)1)<<(e))
|
||||
|
||||
#define EVENT_MASK_NONE_ ((uint64_t)0x0)
|
||||
|
||||
#define EVENT_MASK_ABOVE_MIN_ ((~((uint64_t)0x0)) << EVENT_MIN_)
|
||||
#define EVENT_MASK_BELOW_MAX_ ((~((uint64_t)0x0)) \
|
||||
>> (EVENT_CAPACITY_ - EVENT_MAX_ \
|
||||
- EVENT_MIN_))
|
||||
|
||||
#define EVENT_MASK_ALL_ (EVENT_MASK_ABOVE_MIN_ \
|
||||
& EVENT_MASK_BELOW_MAX_)
|
||||
|
||||
/* Used only by control.c and test.c */
|
||||
STATIC size_t write_escaped_data(const char *data, size_t len, char **out);
|
||||
STATIC size_t read_escaped_data(const char *data, size_t len, char **out);
|
||||
|
||||
#ifdef TOR_UNIT_TESTS
|
||||
MOCK_DECL(STATIC void,
|
||||
send_control_event_string,(uint16_t event, const char *msg));
|
||||
|
||||
MOCK_DECL(STATIC void,
|
||||
queue_control_event_string,(uint16_t event, char *msg));
|
||||
|
||||
void control_testing_set_global_event_mask(uint64_t mask);
|
||||
#endif /* defined(TOR_UNIT_TESTS) */
|
||||
|
||||
/** Helper structure: temporarily stores cell statistics for a circuit. */
|
||||
typedef struct cell_stats_t {
|
||||
/** Number of cells added in app-ward direction by command. */
|
||||
uint64_t added_cells_appward[CELL_COMMAND_MAX_ + 1];
|
||||
/** Number of cells added in exit-ward direction by command. */
|
||||
uint64_t added_cells_exitward[CELL_COMMAND_MAX_ + 1];
|
||||
/** Number of cells removed in app-ward direction by command. */
|
||||
uint64_t removed_cells_appward[CELL_COMMAND_MAX_ + 1];
|
||||
/** Number of cells removed in exit-ward direction by command. */
|
||||
uint64_t removed_cells_exitward[CELL_COMMAND_MAX_ + 1];
|
||||
/** Total waiting time of cells in app-ward direction by command. */
|
||||
uint64_t total_time_appward[CELL_COMMAND_MAX_ + 1];
|
||||
/** Total waiting time of cells in exit-ward direction by command. */
|
||||
uint64_t total_time_exitward[CELL_COMMAND_MAX_ + 1];
|
||||
} cell_stats_t;
|
||||
void sum_up_cell_stats_by_command(circuit_t *circ,
|
||||
cell_stats_t *cell_stats);
|
||||
void append_cell_stats_by_command(smartlist_t *event_parts,
|
||||
const char *key,
|
||||
const uint64_t *include_if_non_zero,
|
||||
const uint64_t *number_to_include);
|
||||
void format_cell_stats(char **event_string, circuit_t *circ,
|
||||
cell_stats_t *cell_stats);
|
||||
STATIC char *get_bw_samples(void);
|
||||
|
||||
/* ADD_ONION secret key to create an ephemeral service. The command supports
|
||||
* multiple versions so this union stores the key and passes it to the HS
|
||||
* subsystem depending on the requested version. */
|
||||
@@ -428,4 +116,9 @@ STATIC int getinfo_helper_current_time(
|
||||
|
||||
#endif /* defined(CONTROL_PRIVATE) */
|
||||
|
||||
#ifdef CONTROL_MODULE_PRIVATE
|
||||
int get_cached_network_liveness(void);
|
||||
void set_cached_network_liveness(int liveness);
|
||||
#endif /* defined(CONTROL_MODULE_PRIVATE) */
|
||||
|
||||
#endif /* !defined(TOR_CONTROL_H) */
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include "core/or/connection_st.h"
|
||||
#include "core/or/or_connection_st.h"
|
||||
#include "core/or/reasons.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/hibernate/hibernate.h"
|
||||
#include "lib/malloc/malloc.h"
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,343 @@
|
||||
/* Copyright (c) 2001 Matej Pfajfar.
|
||||
* Copyright (c) 2001-2004, Roger Dingledine.
|
||||
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
|
||||
* Copyright (c) 2007-2019, The Tor Project, Inc. */
|
||||
/* See LICENSE for licensing information */
|
||||
|
||||
/**
|
||||
* \file control_events.h
|
||||
* \brief Header file for control_events.c.
|
||||
**/
|
||||
|
||||
#ifndef TOR_CONTROL_EVENTS_H
|
||||
#define TOR_CONTROL_EVENTS_H
|
||||
|
||||
#include "core/or/ocirc_event.h"
|
||||
|
||||
/** Used to indicate the type of a CIRC_MINOR event passed to the controller.
|
||||
* The various types are defined in control-spec.txt . */
|
||||
typedef enum circuit_status_minor_event_t {
|
||||
CIRC_MINOR_EVENT_PURPOSE_CHANGED,
|
||||
CIRC_MINOR_EVENT_CANNIBALIZED,
|
||||
} circuit_status_minor_event_t;
|
||||
|
||||
#include "core/or/orconn_event.h"
|
||||
|
||||
/** Used to indicate the type of a stream event passed to the controller.
|
||||
* The various types are defined in control-spec.txt */
|
||||
typedef enum stream_status_event_t {
|
||||
STREAM_EVENT_SENT_CONNECT = 0,
|
||||
STREAM_EVENT_SENT_RESOLVE = 1,
|
||||
STREAM_EVENT_SUCCEEDED = 2,
|
||||
STREAM_EVENT_FAILED = 3,
|
||||
STREAM_EVENT_CLOSED = 4,
|
||||
STREAM_EVENT_NEW = 5,
|
||||
STREAM_EVENT_NEW_RESOLVE = 6,
|
||||
STREAM_EVENT_FAILED_RETRIABLE = 7,
|
||||
STREAM_EVENT_REMAP = 8
|
||||
} stream_status_event_t;
|
||||
|
||||
/** Used to indicate the type of a buildtime event */
|
||||
typedef enum buildtimeout_set_event_t {
|
||||
BUILDTIMEOUT_SET_EVENT_COMPUTED = 0,
|
||||
BUILDTIMEOUT_SET_EVENT_RESET = 1,
|
||||
BUILDTIMEOUT_SET_EVENT_SUSPENDED = 2,
|
||||
BUILDTIMEOUT_SET_EVENT_DISCARD = 3,
|
||||
BUILDTIMEOUT_SET_EVENT_RESUME = 4
|
||||
} buildtimeout_set_event_t;
|
||||
|
||||
/** Enum describing various stages of bootstrapping, for use with controller
|
||||
* bootstrap status events. The values range from 0 to 100. */
|
||||
typedef enum {
|
||||
BOOTSTRAP_STATUS_UNDEF=-1,
|
||||
BOOTSTRAP_STATUS_STARTING=0,
|
||||
|
||||
/* Initial connection to any relay */
|
||||
|
||||
BOOTSTRAP_STATUS_CONN_PT=1,
|
||||
BOOTSTRAP_STATUS_CONN_DONE_PT=2,
|
||||
BOOTSTRAP_STATUS_CONN_PROXY=3,
|
||||
BOOTSTRAP_STATUS_CONN_DONE_PROXY=4,
|
||||
BOOTSTRAP_STATUS_CONN=5,
|
||||
BOOTSTRAP_STATUS_CONN_DONE=10,
|
||||
BOOTSTRAP_STATUS_HANDSHAKE=14,
|
||||
BOOTSTRAP_STATUS_HANDSHAKE_DONE=15,
|
||||
|
||||
/* Loading directory info */
|
||||
|
||||
BOOTSTRAP_STATUS_ONEHOP_CREATE=20,
|
||||
BOOTSTRAP_STATUS_REQUESTING_STATUS=25,
|
||||
BOOTSTRAP_STATUS_LOADING_STATUS=30,
|
||||
BOOTSTRAP_STATUS_LOADING_KEYS=40,
|
||||
BOOTSTRAP_STATUS_REQUESTING_DESCRIPTORS=45,
|
||||
BOOTSTRAP_STATUS_LOADING_DESCRIPTORS=50,
|
||||
BOOTSTRAP_STATUS_ENOUGH_DIRINFO=75,
|
||||
|
||||
/* Connecting to a relay for AP circuits */
|
||||
|
||||
BOOTSTRAP_STATUS_AP_CONN_PT=76,
|
||||
BOOTSTRAP_STATUS_AP_CONN_DONE_PT=77,
|
||||
BOOTSTRAP_STATUS_AP_CONN_PROXY=78,
|
||||
BOOTSTRAP_STATUS_AP_CONN_DONE_PROXY=79,
|
||||
BOOTSTRAP_STATUS_AP_CONN=80,
|
||||
BOOTSTRAP_STATUS_AP_CONN_DONE=85,
|
||||
BOOTSTRAP_STATUS_AP_HANDSHAKE=89,
|
||||
BOOTSTRAP_STATUS_AP_HANDSHAKE_DONE=90,
|
||||
|
||||
/* Creating AP circuits */
|
||||
|
||||
BOOTSTRAP_STATUS_CIRCUIT_CREATE=95,
|
||||
BOOTSTRAP_STATUS_DONE=100
|
||||
} bootstrap_status_t;
|
||||
|
||||
/** Reason for remapping an AP connection's address: we have a cached
|
||||
* answer. */
|
||||
#define REMAP_STREAM_SOURCE_CACHE 1
|
||||
/** Reason for remapping an AP connection's address: the exit node told us an
|
||||
* answer. */
|
||||
#define REMAP_STREAM_SOURCE_EXIT 2
|
||||
|
||||
void control_initialize_event_queue(void);
|
||||
|
||||
void control_update_global_event_mask(void);
|
||||
void control_adjust_event_log_severity(void);
|
||||
|
||||
#define EVENT_NS 0x000F
|
||||
int control_event_is_interesting(int event);
|
||||
|
||||
void control_per_second_events(void);
|
||||
int control_any_per_second_event_enabled(void);
|
||||
|
||||
int control_event_circuit_status(origin_circuit_t *circ,
|
||||
circuit_status_event_t e, int reason);
|
||||
int control_event_circuit_purpose_changed(origin_circuit_t *circ,
|
||||
int old_purpose);
|
||||
int control_event_circuit_cannibalized(origin_circuit_t *circ,
|
||||
int old_purpose,
|
||||
const struct timeval *old_tv_created);
|
||||
int control_event_stream_status(entry_connection_t *conn,
|
||||
stream_status_event_t e,
|
||||
int reason);
|
||||
int control_event_or_conn_status(or_connection_t *conn,
|
||||
or_conn_status_event_t e, int reason);
|
||||
int control_event_bandwidth_used(uint32_t n_read, uint32_t n_written);
|
||||
int control_event_stream_bandwidth(edge_connection_t *edge_conn);
|
||||
int control_event_stream_bandwidth_used(void);
|
||||
int control_event_circ_bandwidth_used(void);
|
||||
int control_event_circ_bandwidth_used_for_circ(origin_circuit_t *ocirc);
|
||||
int control_event_conn_bandwidth(connection_t *conn);
|
||||
int control_event_conn_bandwidth_used(void);
|
||||
int control_event_circuit_cell_stats(void);
|
||||
void control_event_logmsg(int severity, uint32_t domain, const char *msg);
|
||||
void control_event_logmsg_pending(void);
|
||||
int control_event_descriptors_changed(smartlist_t *routers);
|
||||
int control_event_address_mapped(const char *from, const char *to,
|
||||
time_t expires, const char *error,
|
||||
const int cached);
|
||||
int control_event_my_descriptor_changed(void);
|
||||
int control_event_network_liveness_update(int liveness);
|
||||
int control_event_networkstatus_changed(smartlist_t *statuses);
|
||||
|
||||
int control_event_newconsensus(const networkstatus_t *consensus);
|
||||
int control_event_networkstatus_changed_single(const routerstatus_t *rs);
|
||||
int control_event_general_status(int severity, const char *format, ...)
|
||||
CHECK_PRINTF(2,3);
|
||||
int control_event_client_status(int severity, const char *format, ...)
|
||||
CHECK_PRINTF(2,3);
|
||||
int control_event_server_status(int severity, const char *format, ...)
|
||||
CHECK_PRINTF(2,3);
|
||||
|
||||
int control_event_general_error(const char *format, ...)
|
||||
CHECK_PRINTF(1,2);
|
||||
int control_event_client_error(const char *format, ...)
|
||||
CHECK_PRINTF(1,2);
|
||||
int control_event_server_error(const char *format, ...)
|
||||
CHECK_PRINTF(1,2);
|
||||
|
||||
int control_event_guard(const char *nickname, const char *digest,
|
||||
const char *status);
|
||||
int control_event_conf_changed(const smartlist_t *elements);
|
||||
int control_event_buildtimeout_set(buildtimeout_set_event_t type,
|
||||
const char *args);
|
||||
int control_event_signal(uintptr_t signal);
|
||||
|
||||
void control_event_bootstrap(bootstrap_status_t status, int progress);
|
||||
MOCK_DECL(void, control_event_bootstrap_prob_or,(const char *warn,
|
||||
int reason,
|
||||
or_connection_t *or_conn));
|
||||
void control_event_boot_dir(bootstrap_status_t status, int progress);
|
||||
void control_event_boot_first_orconn(void);
|
||||
void control_event_bootstrap_problem(const char *warn, const char *reason,
|
||||
const connection_t *conn, int dowarn);
|
||||
char *control_event_boot_last_msg(void);
|
||||
void control_event_bootstrap_reset(void);
|
||||
|
||||
void control_event_clients_seen(const char *controller_str);
|
||||
void control_event_transport_launched(const char *mode,
|
||||
const char *transport_name,
|
||||
tor_addr_t *addr, uint16_t port);
|
||||
void control_event_pt_log(const char *log);
|
||||
void control_event_pt_status(const char *status);
|
||||
|
||||
void control_event_hs_descriptor_requested(const char *onion_address,
|
||||
rend_auth_type_t auth_type,
|
||||
const char *id_digest,
|
||||
const char *desc_id,
|
||||
const char *hsdir_index);
|
||||
void control_event_hs_descriptor_created(const char *onion_address,
|
||||
const char *desc_id,
|
||||
int replica);
|
||||
void control_event_hs_descriptor_upload(const char *onion_address,
|
||||
const char *desc_id,
|
||||
const char *hs_dir,
|
||||
const char *hsdir_index);
|
||||
void control_event_hs_descriptor_upload_end(const char *action,
|
||||
const char *onion_address,
|
||||
const char *hs_dir,
|
||||
const char *reason);
|
||||
void control_event_hs_descriptor_uploaded(const char *hs_dir,
|
||||
const char *onion_address);
|
||||
/* Hidden service v2 HS_DESC specific. */
|
||||
void control_event_hsv2_descriptor_failed(const rend_data_t *rend_data,
|
||||
const char *id_digest,
|
||||
const char *reason);
|
||||
void control_event_hsv2_descriptor_received(const char *onion_address,
|
||||
const rend_data_t *rend_data,
|
||||
const char *id_digest);
|
||||
/* Hidden service v3 HS_DESC specific. */
|
||||
void control_event_hsv3_descriptor_failed(const char *onion_address,
|
||||
const char *desc_id,
|
||||
const char *hsdir_id_digest,
|
||||
const char *reason);
|
||||
void control_event_hsv3_descriptor_received(const char *onion_address,
|
||||
const char *desc_id,
|
||||
const char *hsdir_id_digest);
|
||||
void control_event_hs_descriptor_upload_failed(const char *hs_dir,
|
||||
const char *onion_address,
|
||||
const char *reason);
|
||||
void control_event_hs_descriptor_content(const char *onion_address,
|
||||
const char *desc_id,
|
||||
const char *hsdir_fp,
|
||||
const char *content);
|
||||
|
||||
void control_events_free_all(void);
|
||||
|
||||
#ifdef CONTROL_MODULE_PRIVATE
|
||||
char *get_bw_samples(void);
|
||||
#endif /* defined(CONTROL_MODULE_PRIVATE) */
|
||||
|
||||
#ifdef CONTROL_EVENTS_PRIVATE
|
||||
/** Bitfield: The bit 1<<e is set if <b>any</b> open control
|
||||
* connection is interested in events of type <b>e</b>. We use this
|
||||
* so that we can decide to skip generating event messages that nobody
|
||||
* has interest in without having to walk over the global connection
|
||||
* list to find out.
|
||||
**/
|
||||
typedef uint64_t event_mask_t;
|
||||
|
||||
/* Recognized asynchronous event types. It's okay to expand this list
|
||||
* because it is used both as a list of v0 event types, and as indices
|
||||
* into the bitfield to determine which controllers want which events.
|
||||
*/
|
||||
/* This bitfield has no event zero 0x0000 */
|
||||
#define EVENT_MIN_ 0x0001
|
||||
#define EVENT_CIRCUIT_STATUS 0x0001
|
||||
#define EVENT_STREAM_STATUS 0x0002
|
||||
#define EVENT_OR_CONN_STATUS 0x0003
|
||||
#define EVENT_BANDWIDTH_USED 0x0004
|
||||
#define EVENT_CIRCUIT_STATUS_MINOR 0x0005
|
||||
#define EVENT_NEW_DESC 0x0006
|
||||
#define EVENT_DEBUG_MSG 0x0007
|
||||
#define EVENT_INFO_MSG 0x0008
|
||||
#define EVENT_NOTICE_MSG 0x0009
|
||||
#define EVENT_WARN_MSG 0x000A
|
||||
#define EVENT_ERR_MSG 0x000B
|
||||
#define EVENT_ADDRMAP 0x000C
|
||||
/* There was an AUTHDIR_NEWDESCS event, but it no longer exists. We
|
||||
can reclaim 0x000D. */
|
||||
#define EVENT_DESCCHANGED 0x000E
|
||||
/* Exposed above */
|
||||
// #define EVENT_NS 0x000F
|
||||
#define EVENT_STATUS_CLIENT 0x0010
|
||||
#define EVENT_STATUS_SERVER 0x0011
|
||||
#define EVENT_STATUS_GENERAL 0x0012
|
||||
#define EVENT_GUARD 0x0013
|
||||
#define EVENT_STREAM_BANDWIDTH_USED 0x0014
|
||||
#define EVENT_CLIENTS_SEEN 0x0015
|
||||
#define EVENT_NEWCONSENSUS 0x0016
|
||||
#define EVENT_BUILDTIMEOUT_SET 0x0017
|
||||
#define EVENT_GOT_SIGNAL 0x0018
|
||||
#define EVENT_CONF_CHANGED 0x0019
|
||||
#define EVENT_CONN_BW 0x001A
|
||||
#define EVENT_CELL_STATS 0x001B
|
||||
/* UNUSED : 0x001C */
|
||||
#define EVENT_CIRC_BANDWIDTH_USED 0x001D
|
||||
#define EVENT_TRANSPORT_LAUNCHED 0x0020
|
||||
#define EVENT_HS_DESC 0x0021
|
||||
#define EVENT_HS_DESC_CONTENT 0x0022
|
||||
#define EVENT_NETWORK_LIVENESS 0x0023
|
||||
#define EVENT_PT_LOG 0x0024
|
||||
#define EVENT_PT_STATUS 0x0025
|
||||
#define EVENT_MAX_ 0x0025
|
||||
|
||||
/* sizeof(control_connection_t.event_mask) in bits, currently a uint64_t */
|
||||
#define EVENT_CAPACITY_ 0x0040
|
||||
|
||||
/* If EVENT_MAX_ ever hits 0x0040, we need to make the mask into a
|
||||
* different structure, as it can only handle a maximum left shift of 1<<63. */
|
||||
|
||||
#if EVENT_MAX_ >= EVENT_CAPACITY_
|
||||
#error control_connection_t.event_mask has an event greater than its capacity
|
||||
#endif
|
||||
|
||||
#define EVENT_MASK_(e) (((uint64_t)1)<<(e))
|
||||
|
||||
#define EVENT_MASK_NONE_ ((uint64_t)0x0)
|
||||
|
||||
#define EVENT_MASK_ABOVE_MIN_ ((~((uint64_t)0x0)) << EVENT_MIN_)
|
||||
#define EVENT_MASK_BELOW_MAX_ ((~((uint64_t)0x0)) \
|
||||
>> (EVENT_CAPACITY_ - EVENT_MAX_ \
|
||||
- EVENT_MIN_))
|
||||
|
||||
#define EVENT_MASK_ALL_ (EVENT_MASK_ABOVE_MIN_ \
|
||||
& EVENT_MASK_BELOW_MAX_)
|
||||
|
||||
/** Helper structure: temporarily stores cell statistics for a circuit. */
|
||||
typedef struct cell_stats_t {
|
||||
/** Number of cells added in app-ward direction by command. */
|
||||
uint64_t added_cells_appward[CELL_COMMAND_MAX_ + 1];
|
||||
/** Number of cells added in exit-ward direction by command. */
|
||||
uint64_t added_cells_exitward[CELL_COMMAND_MAX_ + 1];
|
||||
/** Number of cells removed in app-ward direction by command. */
|
||||
uint64_t removed_cells_appward[CELL_COMMAND_MAX_ + 1];
|
||||
/** Number of cells removed in exit-ward direction by command. */
|
||||
uint64_t removed_cells_exitward[CELL_COMMAND_MAX_ + 1];
|
||||
/** Total waiting time of cells in app-ward direction by command. */
|
||||
uint64_t total_time_appward[CELL_COMMAND_MAX_ + 1];
|
||||
/** Total waiting time of cells in exit-ward direction by command. */
|
||||
uint64_t total_time_exitward[CELL_COMMAND_MAX_ + 1];
|
||||
} cell_stats_t;
|
||||
|
||||
void sum_up_cell_stats_by_command(circuit_t *circ,
|
||||
cell_stats_t *cell_stats);
|
||||
void append_cell_stats_by_command(smartlist_t *event_parts,
|
||||
const char *key,
|
||||
const uint64_t *include_if_non_zero,
|
||||
const uint64_t *number_to_include);
|
||||
void format_cell_stats(char **event_string, circuit_t *circ,
|
||||
cell_stats_t *cell_stats);
|
||||
|
||||
#ifdef TOR_UNIT_TESTS
|
||||
MOCK_DECL(STATIC void,
|
||||
send_control_event_string,(uint16_t event, const char *msg));
|
||||
|
||||
MOCK_DECL(STATIC void,
|
||||
queue_control_event_string,(uint16_t event, char *msg));
|
||||
|
||||
void control_testing_set_global_event_mask(uint64_t mask);
|
||||
|
||||
#endif /* defined(TOR_UNIT_TESTS) */
|
||||
|
||||
#endif /* defined(CONTROL_EVENTS_PRIVATE) */
|
||||
|
||||
#endif /* !defined(TOR_CONTROL_EVENTS_H) */
|
||||
@@ -0,0 +1,289 @@
|
||||
/* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
|
||||
* Copyright (c) 2007-2019, The Tor Project, Inc. */
|
||||
/* See LICENSE for licensing information */
|
||||
|
||||
/**
|
||||
* \file control.c
|
||||
* \brief Formatting functions for controller data.
|
||||
*/
|
||||
|
||||
#include "core/or/or.h"
|
||||
|
||||
#include "core/mainloop/connection.h"
|
||||
#include "core/or/circuitbuild.h"
|
||||
#include "core/or/circuitlist.h"
|
||||
#include "core/or/connection_edge.h"
|
||||
#include "feature/control/control_fmt.h"
|
||||
#include "feature/nodelist/nodelist.h"
|
||||
|
||||
#include "core/or/cpath_build_state_st.h"
|
||||
#include "core/or/entry_connection_st.h"
|
||||
#include "core/or/or_connection_st.h"
|
||||
#include "core/or/origin_circuit_st.h"
|
||||
#include "core/or/socks_request_st.h"
|
||||
#include "feature/control/control_connection_st.h"
|
||||
|
||||
/** Acts like sprintf, but writes its formatted string to the end of
|
||||
* <b>conn</b>-\>outbuf. */
|
||||
void
|
||||
connection_printf_to_buf(control_connection_t *conn, const char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
char *buf = NULL;
|
||||
int len;
|
||||
|
||||
va_start(ap,format);
|
||||
len = tor_vasprintf(&buf, format, ap);
|
||||
va_end(ap);
|
||||
|
||||
if (len < 0) {
|
||||
log_err(LD_BUG, "Unable to format string for controller.");
|
||||
tor_assert(0);
|
||||
}
|
||||
|
||||
connection_buf_add(buf, (size_t)len, TO_CONN(conn));
|
||||
|
||||
tor_free(buf);
|
||||
}
|
||||
|
||||
/** Given an AP connection <b>conn</b> and a <b>len</b>-character buffer
|
||||
* <b>buf</b>, determine the address:port combination requested on
|
||||
* <b>conn</b>, and write it to <b>buf</b>. Return 0 on success, -1 on
|
||||
* failure. */
|
||||
int
|
||||
write_stream_target_to_buf(entry_connection_t *conn, char *buf, size_t len)
|
||||
{
|
||||
char buf2[256];
|
||||
if (conn->chosen_exit_name)
|
||||
if (tor_snprintf(buf2, sizeof(buf2), ".%s.exit", conn->chosen_exit_name)<0)
|
||||
return -1;
|
||||
if (!conn->socks_request)
|
||||
return -1;
|
||||
if (tor_snprintf(buf, len, "%s%s%s:%d",
|
||||
conn->socks_request->address,
|
||||
conn->chosen_exit_name ? buf2 : "",
|
||||
!conn->chosen_exit_name && connection_edge_is_rendezvous_stream(
|
||||
ENTRY_TO_EDGE_CONN(conn)) ? ".onion" : "",
|
||||
conn->socks_request->port)<0)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Figure out the best name for the target router of an OR connection
|
||||
* <b>conn</b>, and write it into the <b>len</b>-character buffer
|
||||
* <b>name</b>. */
|
||||
void
|
||||
orconn_target_get_name(char *name, size_t len, or_connection_t *conn)
|
||||
{
|
||||
const node_t *node = node_get_by_id(conn->identity_digest);
|
||||
if (node) {
|
||||
tor_assert(len > MAX_VERBOSE_NICKNAME_LEN);
|
||||
node_get_verbose_nickname(node, name);
|
||||
} else if (! tor_digest_is_zero(conn->identity_digest)) {
|
||||
name[0] = '$';
|
||||
base16_encode(name+1, len-1, conn->identity_digest,
|
||||
DIGEST_LEN);
|
||||
} else {
|
||||
tor_snprintf(name, len, "%s:%d",
|
||||
conn->base_.address, conn->base_.port);
|
||||
}
|
||||
}
|
||||
|
||||
/** Allocate and return a description of <b>circ</b>'s current status,
|
||||
* including its path (if any). */
|
||||
char *
|
||||
circuit_describe_status_for_controller(origin_circuit_t *circ)
|
||||
{
|
||||
char *rv;
|
||||
smartlist_t *descparts = smartlist_new();
|
||||
|
||||
{
|
||||
char *vpath = circuit_list_path_for_controller(circ);
|
||||
if (*vpath) {
|
||||
smartlist_add(descparts, vpath);
|
||||
} else {
|
||||
tor_free(vpath); /* empty path; don't put an extra space in the result */
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
cpath_build_state_t *build_state = circ->build_state;
|
||||
smartlist_t *flaglist = smartlist_new();
|
||||
char *flaglist_joined;
|
||||
|
||||
if (build_state->onehop_tunnel)
|
||||
smartlist_add(flaglist, (void *)"ONEHOP_TUNNEL");
|
||||
if (build_state->is_internal)
|
||||
smartlist_add(flaglist, (void *)"IS_INTERNAL");
|
||||
if (build_state->need_capacity)
|
||||
smartlist_add(flaglist, (void *)"NEED_CAPACITY");
|
||||
if (build_state->need_uptime)
|
||||
smartlist_add(flaglist, (void *)"NEED_UPTIME");
|
||||
|
||||
/* Only emit a BUILD_FLAGS argument if it will have a non-empty value. */
|
||||
if (smartlist_len(flaglist)) {
|
||||
flaglist_joined = smartlist_join_strings(flaglist, ",", 0, NULL);
|
||||
|
||||
smartlist_add_asprintf(descparts, "BUILD_FLAGS=%s", flaglist_joined);
|
||||
|
||||
tor_free(flaglist_joined);
|
||||
}
|
||||
|
||||
smartlist_free(flaglist);
|
||||
}
|
||||
|
||||
smartlist_add_asprintf(descparts, "PURPOSE=%s",
|
||||
circuit_purpose_to_controller_string(circ->base_.purpose));
|
||||
|
||||
{
|
||||
const char *hs_state =
|
||||
circuit_purpose_to_controller_hs_state_string(circ->base_.purpose);
|
||||
|
||||
if (hs_state != NULL) {
|
||||
smartlist_add_asprintf(descparts, "HS_STATE=%s", hs_state);
|
||||
}
|
||||
}
|
||||
|
||||
if (circ->rend_data != NULL || circ->hs_ident != NULL) {
|
||||
char addr[HS_SERVICE_ADDR_LEN_BASE32 + 1];
|
||||
const char *onion_address;
|
||||
if (circ->rend_data) {
|
||||
onion_address = rend_data_get_address(circ->rend_data);
|
||||
} else {
|
||||
hs_build_address(&circ->hs_ident->identity_pk, HS_VERSION_THREE, addr);
|
||||
onion_address = addr;
|
||||
}
|
||||
smartlist_add_asprintf(descparts, "REND_QUERY=%s", onion_address);
|
||||
}
|
||||
|
||||
{
|
||||
char tbuf[ISO_TIME_USEC_LEN+1];
|
||||
format_iso_time_nospace_usec(tbuf, &circ->base_.timestamp_created);
|
||||
|
||||
smartlist_add_asprintf(descparts, "TIME_CREATED=%s", tbuf);
|
||||
}
|
||||
|
||||
// Show username and/or password if available.
|
||||
if (circ->socks_username_len > 0) {
|
||||
char* socks_username_escaped = esc_for_log_len(circ->socks_username,
|
||||
(size_t) circ->socks_username_len);
|
||||
smartlist_add_asprintf(descparts, "SOCKS_USERNAME=%s",
|
||||
socks_username_escaped);
|
||||
tor_free(socks_username_escaped);
|
||||
}
|
||||
if (circ->socks_password_len > 0) {
|
||||
char* socks_password_escaped = esc_for_log_len(circ->socks_password,
|
||||
(size_t) circ->socks_password_len);
|
||||
smartlist_add_asprintf(descparts, "SOCKS_PASSWORD=%s",
|
||||
socks_password_escaped);
|
||||
tor_free(socks_password_escaped);
|
||||
}
|
||||
|
||||
rv = smartlist_join_strings(descparts, " ", 0, NULL);
|
||||
|
||||
SMARTLIST_FOREACH(descparts, char *, cp, tor_free(cp));
|
||||
smartlist_free(descparts);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
/** Given a <b>len</b>-character string in <b>data</b>, made of lines
|
||||
* terminated by CRLF, allocate a new string in *<b>out</b>, and copy the
|
||||
* contents of <b>data</b> into *<b>out</b>, adding a period before any period
|
||||
* that appears at the start of a line, and adding a period-CRLF line at
|
||||
* the end. Replace all LF characters sequences with CRLF. Return the number
|
||||
* of bytes in *<b>out</b>.
|
||||
*/
|
||||
size_t
|
||||
write_escaped_data(const char *data, size_t len, char **out)
|
||||
{
|
||||
tor_assert(len < SIZE_MAX - 9);
|
||||
size_t sz_out = len+8+1;
|
||||
char *outp;
|
||||
const char *start = data, *end;
|
||||
size_t i;
|
||||
int start_of_line;
|
||||
for (i=0; i < len; ++i) {
|
||||
if (data[i] == '\n') {
|
||||
sz_out += 2; /* Maybe add a CR; maybe add a dot. */
|
||||
if (sz_out >= SIZE_T_CEILING) {
|
||||
log_warn(LD_BUG, "Input to write_escaped_data was too long");
|
||||
*out = tor_strdup(".\r\n");
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
*out = outp = tor_malloc(sz_out);
|
||||
end = data+len;
|
||||
start_of_line = 1;
|
||||
while (data < end) {
|
||||
if (*data == '\n') {
|
||||
if (data > start && data[-1] != '\r')
|
||||
*outp++ = '\r';
|
||||
start_of_line = 1;
|
||||
} else if (*data == '.') {
|
||||
if (start_of_line) {
|
||||
start_of_line = 0;
|
||||
*outp++ = '.';
|
||||
}
|
||||
} else {
|
||||
start_of_line = 0;
|
||||
}
|
||||
*outp++ = *data++;
|
||||
}
|
||||
if (outp < *out+2 || fast_memcmp(outp-2, "\r\n", 2)) {
|
||||
*outp++ = '\r';
|
||||
*outp++ = '\n';
|
||||
}
|
||||
*outp++ = '.';
|
||||
*outp++ = '\r';
|
||||
*outp++ = '\n';
|
||||
*outp = '\0'; /* NUL-terminate just in case. */
|
||||
tor_assert(outp >= *out);
|
||||
tor_assert((size_t)(outp - *out) <= sz_out);
|
||||
return outp - *out;
|
||||
}
|
||||
|
||||
/** Given a <b>len</b>-character string in <b>data</b>, made of lines
|
||||
* terminated by CRLF, allocate a new string in *<b>out</b>, and copy
|
||||
* the contents of <b>data</b> into *<b>out</b>, removing any period
|
||||
* that appears at the start of a line, and replacing all CRLF sequences
|
||||
* with LF. Return the number of
|
||||
* bytes in *<b>out</b>. */
|
||||
size_t
|
||||
read_escaped_data(const char *data, size_t len, char **out)
|
||||
{
|
||||
char *outp;
|
||||
const char *next;
|
||||
const char *end;
|
||||
|
||||
*out = outp = tor_malloc(len+1);
|
||||
|
||||
end = data+len;
|
||||
|
||||
while (data < end) {
|
||||
/* we're at the start of a line. */
|
||||
if (*data == '.')
|
||||
++data;
|
||||
next = memchr(data, '\n', end-data);
|
||||
if (next) {
|
||||
size_t n_to_copy = next-data;
|
||||
/* Don't copy a CR that precedes this LF. */
|
||||
if (n_to_copy && *(next-1) == '\r')
|
||||
--n_to_copy;
|
||||
memcpy(outp, data, n_to_copy);
|
||||
outp += n_to_copy;
|
||||
data = next+1; /* This will point at the start of the next line,
|
||||
* or the end of the string, or a period. */
|
||||
} else {
|
||||
memcpy(outp, data, end-data);
|
||||
outp += (end-data);
|
||||
*outp = '\0';
|
||||
return outp - *out;
|
||||
}
|
||||
*outp++ = '\n';
|
||||
}
|
||||
|
||||
*outp = '\0';
|
||||
return outp - *out;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
/* Copyright (c) 2001 Matej Pfajfar.
|
||||
* Copyright (c) 2001-2004, Roger Dingledine.
|
||||
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
|
||||
* Copyright (c) 2007-2019, The Tor Project, Inc. */
|
||||
/* See LICENSE for licensing information */
|
||||
|
||||
/**
|
||||
* \file control_fmt.h
|
||||
* \brief Header file for control_fmt.c.
|
||||
**/
|
||||
|
||||
#ifndef TOR_CONTROL_FMT_H
|
||||
#define TOR_CONTROL_FMT_H
|
||||
|
||||
void connection_printf_to_buf(control_connection_t *conn,
|
||||
const char *format, ...)
|
||||
CHECK_PRINTF(2,3);
|
||||
|
||||
int write_stream_target_to_buf(entry_connection_t *conn, char *buf,
|
||||
size_t len);
|
||||
void orconn_target_get_name(char *buf, size_t len,
|
||||
or_connection_t *conn);
|
||||
char *circuit_describe_status_for_controller(origin_circuit_t *circ);
|
||||
|
||||
size_t write_escaped_data(const char *data, size_t len, char **out);
|
||||
size_t read_escaped_data(const char *data, size_t len, char **out);
|
||||
|
||||
#endif /* !defined(TOR_CONTROL_FMT_H) */
|
||||
@@ -14,7 +14,7 @@
|
||||
#include "core/or/policies.h"
|
||||
#include "feature/client/bridges.h"
|
||||
#include "feature/client/entrynodes.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dirauth/authmode.h"
|
||||
#include "feature/dirauth/dirvote.h"
|
||||
#include "feature/dirauth/shared_random.h"
|
||||
|
||||
@@ -35,7 +35,7 @@ hibernating, phase 2:
|
||||
#include "core/mainloop/connection.h"
|
||||
#include "core/or/connection_edge.h"
|
||||
#include "core/or/connection_or.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "lib/crypt_ops/crypto_rand.h"
|
||||
#include "lib/defs/time.h"
|
||||
#include "feature/hibernate/hibernate.h"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
**/
|
||||
|
||||
#include "core/or/or.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "lib/crypt_ops/crypto_format.h"
|
||||
#include "lib/crypt_ops/crypto_util.h"
|
||||
#include "feature/hs/hs_client.h"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
#include "app/config/config.h"
|
||||
#include "core/or/policies.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dirauth/authmode.h"
|
||||
#include "feature/dircommon/directory.h"
|
||||
#include "feature/nodelist/dirlist.h"
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
#include "feature/client/bridges.h"
|
||||
#include "feature/client/entrynodes.h"
|
||||
#include "feature/client/transports.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dirauth/reachability.h"
|
||||
#include "feature/dircache/consdiffmgr.h"
|
||||
#include "feature/dircache/dirserv.h"
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
#include "core/or/protover.h"
|
||||
#include "feature/client/bridges.h"
|
||||
#include "feature/client/entrynodes.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dirauth/process_descs.h"
|
||||
#include "feature/dircache/dirserv.h"
|
||||
#include "feature/hs/hs_client.h"
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
#include "core/mainloop/mainloop.h"
|
||||
#include "core/or/policies.h"
|
||||
#include "feature/client/bridges.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dirauth/authmode.h"
|
||||
#include "feature/dirauth/process_descs.h"
|
||||
#include "feature/dirauth/reachability.h"
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
#include "core/or/connection_edge.h"
|
||||
#include "core/or/policies.h"
|
||||
#include "core/or/relay.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/relay/dns.h"
|
||||
#include "feature/relay/router.h"
|
||||
#include "feature/relay/routermode.h"
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
#include "core/or/or.h"
|
||||
#include "core/mainloop/connection.h"
|
||||
#include "core/or/connection_or.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "app/config/config.h"
|
||||
#include "lib/crypt_ops/crypto_rand.h"
|
||||
#include "lib/crypt_ops/crypto_util.h"
|
||||
@@ -659,4 +659,3 @@ ext_orport_free_all(void)
|
||||
if (ext_or_auth_cookie) /* Free the auth cookie */
|
||||
tor_free(ext_or_auth_cookie);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#include "core/or/policies.h"
|
||||
#include "core/or/protover.h"
|
||||
#include "feature/client/transports.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dirauth/process_descs.h"
|
||||
#include "feature/dircache/dirserv.h"
|
||||
#include "feature/dirclient/dirclient.h"
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#include "core/or/crypt_path_st.h"
|
||||
#include "core/or/origin_circuit_st.h"
|
||||
#include "core/or/relay.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dirclient/dirclient.h"
|
||||
#include "feature/dircommon/directory.h"
|
||||
#include "feature/nodelist/authority_cert_st.h"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#include "core/or/connection_edge.h"
|
||||
#include "core/or/relay.h"
|
||||
#include "feature/client/circpathbias.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dirclient/dirclient.h"
|
||||
#include "feature/dircommon/directory.h"
|
||||
#include "feature/hs/hs_circuit.h"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include "core/or/circuitlist.h"
|
||||
#include "core/or/circuituse.h"
|
||||
#include "app/config/config.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "lib/crypt_ops/crypto_rand.h"
|
||||
#include "lib/crypt_ops/crypto_util.h"
|
||||
#include "feature/hs/hs_client.h"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#include "core/or/policies.h"
|
||||
#include "core/or/relay.h"
|
||||
#include "feature/client/circpathbias.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/dirclient/dirclient.h"
|
||||
#include "feature/dircommon/directory.h"
|
||||
#include "feature/hs/hs_common.h"
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
#include "ht.h"
|
||||
#include "lib/buf/buffers.h"
|
||||
#include "app/config/config.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/client/dnsserv.h"
|
||||
#include "core/or/dos.h"
|
||||
#include "lib/geoip/geoip.h"
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#define CONNECTION_PRIVATE
|
||||
#define TOR_CHANNEL_INTERNAL_
|
||||
#define CONTROL_PRIVATE
|
||||
#define CONTROL_EVENTS_PRIVATE
|
||||
#define OCIRC_EVENT_PRIVATE
|
||||
#define ORCONN_EVENT_PRIVATE
|
||||
#include "core/or/or.h"
|
||||
@@ -13,7 +14,7 @@
|
||||
#include "core/or/ocirc_event.h"
|
||||
#include "core/or/orconn_event.h"
|
||||
#include "core/mainloop/connection.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "test/test.h"
|
||||
|
||||
#include "core/or/or_circuit_st.h"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "core/mainloop/connection.h"
|
||||
#include "core/or/connection_or.h"
|
||||
#include "app/config/config.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "lib/crypt_ops/crypto_rand.h"
|
||||
#include "feature/relay/ext_orport.h"
|
||||
#include "core/mainloop/mainloop.h"
|
||||
|
||||
+2
-1
@@ -6,7 +6,7 @@
|
||||
* \brief Unit tests for hidden service.
|
||||
**/
|
||||
|
||||
#define CONTROL_PRIVATE
|
||||
#define CONTROL_EVENTS_PRIVATE
|
||||
#define CIRCUITBUILD_PRIVATE
|
||||
#define RENDCOMMON_PRIVATE
|
||||
#define RENDSERVICE_PRIVATE
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "core/or/or.h"
|
||||
#include "test/test.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "app/config/config.h"
|
||||
#include "feature/hs/hs_common.h"
|
||||
#include "feature/rend/rendcommon.h"
|
||||
|
||||
@@ -6,11 +6,12 @@
|
||||
* \brief Unit tests for hidden service control port event and command.
|
||||
**/
|
||||
|
||||
#define CONTROL_PRIVATE
|
||||
#define CONTROL_EVENTS_PRIVATE
|
||||
|
||||
#include "core/or/or.h"
|
||||
#include "test/test.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "app/config/config.h"
|
||||
#include "feature/hs/hs_common.h"
|
||||
#include "feature/hs/hs_control.h"
|
||||
|
||||
+3
-1
@@ -7,12 +7,14 @@
|
||||
#define PT_PRIVATE
|
||||
#define UTIL_PRIVATE
|
||||
#define STATEFILE_PRIVATE
|
||||
#define CONTROL_PRIVATE
|
||||
//#define CONTROL_PRIVATE
|
||||
#define CONTROL_EVENTS_PRIVATE
|
||||
#define PROCESS_PRIVATE
|
||||
#include "core/or/or.h"
|
||||
#include "app/config/config.h"
|
||||
#include "app/config/confparse.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "feature/client/transports.h"
|
||||
#include "core/or/circuitbuild.h"
|
||||
#include "app/config/statefile.h"
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "lib/buf/buffers.h"
|
||||
#include "app/config/config.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_fmt.h"
|
||||
#include "feature/client/transports.h"
|
||||
#include "lib/crypt_ops/crypto_format.h"
|
||||
#include "lib/crypt_ops/crypto_rand.h"
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "orconfig.h"
|
||||
#include "core/or/or.h"
|
||||
#include "feature/control/control.h"
|
||||
#include "feature/control/control_events.h"
|
||||
#include "app/config/config.h"
|
||||
#include "lib/crypt_ops/crypto_dh.h"
|
||||
#include "lib/crypt_ops/crypto_ed25519.h"
|
||||
|
||||
Reference in New Issue
Block a user