Tor
0.4.7.0-alpha-dev
|
Header file for control_events.c. More...
Go to the source code of this file.
Macros | |
#define | REMAP_STREAM_SOURCE_CACHE 1 |
#define | REMAP_STREAM_SOURCE_EXIT 2 |
#define | EVENT_NS 0x000F |
Enumerations | |
enum | circuit_status_minor_event_t { CIRC_MINOR_EVENT_PURPOSE_CHANGED , CIRC_MINOR_EVENT_CANNIBALIZED } |
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_EVENT_CONTROLLER_WAIT = 9 } |
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 } |
enum | bootstrap_status_t { BOOTSTRAP_STATUS_UNDEF =-1 , BOOTSTRAP_STATUS_STARTING =0 , 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 , 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 , 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 , BOOTSTRAP_STATUS_CIRCUIT_CREATE =95 , BOOTSTRAP_STATUS_DONE =100 } |
Functions | |
void | control_initialize_event_queue (void) |
void | control_update_global_event_mask (void) |
void | control_adjust_event_log_severity (void) |
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, log_domain_mask_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, uint64_t stream_id) |
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,...) |
int | control_event_client_status (int severity, const char *format,...) |
int | control_event_server_status (int severity, const char *format,...) |
int | control_event_general_error (const char *format,...) |
int | control_event_client_error (const char *format,...) |
int | control_event_server_error (const char *format,...) |
int | control_event_guard (const char *nickname, const char *digest, const char *status) |
void | control_event_conf_changed (const struct config_line_t *changes) |
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) |
int | control_get_bootstrap_percent (void) |
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) |
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 | cbt_control_event_buildtimeout_set (const circuit_build_times_t *cbt, buildtimeout_set_event_t type) |
int | control_event_enter_controller_wait (void) |
void | control_events_free_all (void) |
Header file for control_events.c.
Definition in file control_events.h.
#define REMAP_STREAM_SOURCE_CACHE 1 |
Reason for remapping an AP connection's address: we have a cached answer.
Definition at line 98 of file control_events.h.
#define REMAP_STREAM_SOURCE_EXIT 2 |
Reason for remapping an AP connection's address: the exit node told us an answer.
Definition at line 101 of file control_events.h.
enum bootstrap_status_t |
Enum describing various stages of bootstrapping, for use with controller bootstrap status events. The values range from 0 to 100.
Definition at line 54 of file control_events.h.
Used to indicate the type of a buildtime event
Definition at line 44 of file control_events.h.
Used to indicate the type of a CIRC_MINOR event passed to the controller. The various types are defined in control-spec.txt .
Definition at line 23 of file control_events.h.
Used to indicate the type of a stream event passed to the controller. The various types are defined in control-spec.txt
Definition at line 30 of file control_events.h.
void control_adjust_event_log_severity | ( | void | ) |
Adjust the log severities that result in control_event_logmsg being called to match the severity of log messages that any controllers are interested in.
Definition at line 277 of file control_events.c.
Referenced by control_update_global_event_mask(), and options_rollback_log_transaction().
int control_any_per_second_event_enabled | ( | void | ) |
Return true if any event that needs to fire once a second is enabled.
Definition at line 321 of file control_events.c.
Referenced by control_per_second_events(), and control_update_global_event_mask().
int control_event_address_mapped | ( | const char * | from, |
const char * | to, | ||
time_t | expires, | ||
const char * | error, | ||
const int | cached, | ||
uint64_t | stream_id | ||
) |
Called when an address mapping on from from changes to to. expires values less than 3 are special; see connection_edge.c. If error is non-NULL, it is an error code describing the failure mode of the mapping.
Definition at line 1480 of file control_events.c.
int control_event_bandwidth_used | ( | uint32_t | n_read, |
uint32_t | n_written | ||
) |
A second or more has elapsed: tell any interested control connections how much bandwidth we used.
Definition at line 1289 of file control_events.c.
Referenced by control_per_second_events().
void control_event_boot_dir | ( | bootstrap_status_t | status, |
int | progress | ||
) |
Defer directory info bootstrap events until we have successfully completed our first connection to a router.
Definition at line 234 of file control_bootstrap.c.
void control_event_boot_first_orconn | ( | void | ) |
Set a flag to allow reporting of directory bootstrap progress. (Code that reports completion of an OR_CONN calls this.) Also, report directory progress so far.
Definition at line 255 of file control_bootstrap.c.
char* control_event_boot_last_msg | ( | void | ) |
Return a copy of the last sent bootstrap message.
Definition at line 384 of file control_bootstrap.c.
void control_event_bootstrap | ( | bootstrap_status_t | status, |
int | progress | ||
) |
Called when Tor has made progress at bootstrapping its directory information and initial circuits.
status is the new status, that is, what task we will be doing next. progress is zero if we just started this task, else it represents progress on the task.
Definition at line 188 of file control_bootstrap.c.
Referenced by bto_cevent_anyconn(), bto_cevent_apconn(), and control_event_boot_first_orconn().
void control_event_bootstrap_prob_or | ( | const char * | warn, |
int | reason, | ||
or_connection_t * | or_conn | ||
) |
Called when Tor has failed to make bootstrapping progress in a way that indicates a problem. warn gives a hint as to why, and reason provides an "or_conn_end_reason" tag. or_conn is the connection that caused this problem.
Definition at line 347 of file control_bootstrap.c.
void control_event_bootstrap_problem | ( | const char * | warn, |
const char * | reason, | ||
const connection_t * | conn, | ||
int | dowarn | ||
) |
Called when Tor has failed to make bootstrapping progress in a way that indicates a problem. warn gives a human-readable hint as to why, and reason provides a controller-facing short tag. conn is the connection that caused this problem and can be NULL if a connection cannot be easily identified.
Definition at line 268 of file control_bootstrap.c.
void control_event_bootstrap_reset | ( | void | ) |
Reset bootstrap tracking state.
Definition at line 391 of file control_bootstrap.c.
int control_event_buildtimeout_set | ( | buildtimeout_set_event_t | type, |
const char * | args | ||
) |
Called when we compute a new circuitbuildtimeout
Definition at line 1604 of file control_events.c.
int control_event_circ_bandwidth_used | ( | void | ) |
A second or more has elapsed: tell any interested control connections how much bandwidth origin circuits have used.
Definition at line 1032 of file control_events.c.
Referenced by control_per_second_events().
int control_event_circ_bandwidth_used_for_circ | ( | origin_circuit_t * | ocirc | ) |
Emit a CIRC_BW event line for a specific circuit.
This function sets the values it emits to 0, and does not emit an event if there is no new data to report since the last call.
Therefore, it may be called at any frequency.
Definition at line 1057 of file control_events.c.
Referenced by control_event_circ_bandwidth_used().
int control_event_circuit_cannibalized | ( | origin_circuit_t * | circ, |
int | old_purpose, | ||
const struct timeval * | old_tv_created | ||
) |
circ has changed its purpose from old_purpose, and its created-time from old_tv_created: tell any interested controllers.
Definition at line 775 of file control_events.c.
int control_event_circuit_cell_stats | ( | void | ) |
A second or more has elapsed: tell any interested control connection how many cells have been processed for a given circuit.
Definition at line 1253 of file control_events.c.
Referenced by control_per_second_events().
int control_event_circuit_purpose_changed | ( | origin_circuit_t * | circ, |
int | old_purpose | ||
) |
circ has changed its purpose from old_purpose: tell any interested controllers.
Definition at line 761 of file control_events.c.
int control_event_circuit_status | ( | origin_circuit_t * | circ, |
circuit_status_event_t | tp, | ||
int | reason_code | ||
) |
Something major has happened to circuit circ: tell any interested control connections.
Definition at line 631 of file control_events.c.
int control_event_client_error | ( | const char * | format, |
... | |||
) |
Format and send an EVENT_STATUS_CLIENT LOG_ERR event, and flush it to the controller(s) immediately.
Definition at line 1794 of file control_events.c.
int control_event_client_status | ( | int | severity, |
const char * | format, | ||
... | |||
) |
Format and send an EVENT_STATUS_CLIENT event whose main text is obtained by formatting the arguments using the printf-style format.
Definition at line 1785 of file control_events.c.
Referenced by circuit_note_clock_jumped().
void control_event_clients_seen | ( | const char * | controller_str | ) |
We just generated a new summary of which countries we've seen clients from recently. Send a copy to the controller in case it wants to display it for the user.
Definition at line 1881 of file control_events.c.
int control_event_conn_bandwidth | ( | connection_t * | conn | ) |
Print out CONN_BW event for a single OR/DIR/EXIT conn and reset bandwidth counters.
Definition at line 1100 of file control_events.c.
Referenced by control_event_conn_bandwidth_used().
int control_event_conn_bandwidth_used | ( | void | ) |
A second or more has elapsed: tell any interested control connections how much bandwidth connections have used.
Definition at line 1135 of file control_events.c.
Referenced by control_per_second_events().
int control_event_descriptors_changed | ( | smartlist_t * | routers | ) |
Called whenever we receive new router descriptors: tell any interested control connections. routers is a list of routerinfo_t's.
Definition at line 1448 of file control_events.c.
Referenced by routerlist_descriptors_added().
int control_event_general_error | ( | const char * | format, |
... | |||
) |
Format and send an EVENT_STATUS_GENERAL LOG_ERR event, and flush it to the controller(s) immediately.
Definition at line 1774 of file control_events.c.
int control_event_general_status | ( | int | severity, |
const char * | format, | ||
... | |||
) |
Format and send an EVENT_STATUS_GENERAL event whose main text is obtained by formatting the arguments using the printf-style format.
Definition at line 1765 of file control_events.c.
Referenced by circuit_note_clock_jumped(), and control_event_logmsg().
int control_event_guard | ( | const char * | nickname, |
const char * | digest, | ||
const char * | status | ||
) |
Called when the status of an entry guard with the given nickname and identity digest has changed to status: tells any controllers that care.
Definition at line 1826 of file control_events.c.
Referenced by entry_guards_note_guard_failure(), and entry_guards_note_guard_success().
void control_event_hs_descriptor_content | ( | const char * | onion_address, |
const char * | desc_id, | ||
const char * | hsdir_id_digest, | ||
const char * | content | ||
) |
Send HS_DESC_CONTENT event after completion of a successful fetch from hs directory. If hsdir_id_digest is NULL, it is replaced by "UNKNOWN". If content is NULL, it is replaced by an empty string. The onion_address or desc_id set to NULL will not trigger the control event.
Definition at line 2204 of file control_events.c.
Referenced by hs_control_desc_event_content().
void control_event_hs_descriptor_created | ( | const char * | onion_address, |
const char * | desc_id, | ||
int | replica | ||
) |
send HS_DESC CREATED event when a local service generates a descriptor.
onion_address is service address. desc_id is the descriptor ID. replica is the the descriptor replica number. If it is negative, it is ignored.
Definition at line 2008 of file control_events.c.
Referenced by hs_control_desc_event_created().
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 | ||
) |
send HS_DESC requested event.
rend_query is used to fetch requested onion address and auth type. hs_dir is the description of contacting hs directory. desc_id_base32 is the ID of requested hs descriptor. hsdir_index is the HSDir fetch index value for v3, an hex string.
Definition at line 1974 of file control_events.c.
Referenced by hs_control_desc_event_requested().
void control_event_hs_descriptor_upload | ( | const char * | onion_address, |
const char * | id_digest, | ||
const char * | desc_id, | ||
const char * | hsdir_index | ||
) |
send HS_DESC upload event.
onion_address is service address. hs_dir is the description of contacting hs directory. desc_id is the ID of requested hs descriptor.
Definition at line 2036 of file control_events.c.
Referenced by hs_control_desc_event_upload().
void control_event_hs_descriptor_upload_end | ( | const char * | action, |
const char * | onion_address, | ||
const char * | id_digest, | ||
const char * | reason | ||
) |
send HS_DESC event after got response from hs directory.
NOTE: this is an internal function used by following functions: control_event_hs_descriptor_uploaded control_event_hs_descriptor_upload_failed
So do not call this function directly.
Definition at line 2108 of file control_events.c.
void control_event_hs_descriptor_upload_failed | ( | const char * | id_digest, |
const char * | onion_address, | ||
const char * | reason | ||
) |
Send HS_DESC event to inform controller upload of hidden service descriptor identified by id_digest failed. If reason is not NULL, add it to REASON= field.
Definition at line 2241 of file control_events.c.
void control_event_hs_descriptor_uploaded | ( | const char * | id_digest, |
const char * | onion_address | ||
) |
send HS_DESC UPLOADED event
called when we successfully uploaded a hidden service descriptor.
Definition at line 2161 of file control_events.c.
Referenced by hs_control_desc_event_uploaded().
void control_event_hsv3_descriptor_failed | ( | const char * | onion_address, |
const char * | desc_id, | ||
const char * | hsdir_id_digest, | ||
const char * | reason | ||
) |
Send HS_DESC event to inform controller that the query to onion_address failed to retrieve hidden service descriptor desc_id from directory identified by hsdir_id_digest. If NULL, "UNKNOWN" is used. If reason is not NULL, add it to REASON= field.
Definition at line 2178 of file control_events.c.
Referenced by hs_control_desc_event_failed().
int control_event_is_interesting | ( | int | event | ) |
Return true iff the event with code c is being sent to any current control connection. This is useful if the amount of work needed to prepare to call the appropriate control_event_...() function is high.
Definition at line 314 of file control_events.c.
Referenced by control_event_newconsensus(), control_event_signal(), and notify_control_networkstatus_changed().
void control_event_logmsg | ( | int | severity, |
log_domain_mask_t | domain, | ||
const char * | msg | ||
) |
We got a log message: tell any interested control connections.
Definition at line 1378 of file control_events.c.
Referenced by control_adjust_event_log_severity().
void control_event_logmsg_pending | ( | void | ) |
Logging callback: called when there is a queued pending log callback.
Definition at line 1430 of file control_events.c.
int control_event_my_descriptor_changed | ( | void | ) |
Our own router descriptor has changed; tell any controllers that care.
Definition at line 1688 of file control_events.c.
int control_event_network_liveness_update | ( | int | liveness | ) |
The network liveness has changed; this is called from circuitstats.c whenever we receive a cell, or when timeout expires and we assume the network is down.
Definition at line 1520 of file control_events.c.
int control_event_networkstatus_changed | ( | smartlist_t * | statuses | ) |
Called when the routerstatus_ts statuses have changed: sends an NS event to any controller that cares.
Definition at line 1586 of file control_events.c.
int control_event_networkstatus_changed_single | ( | const routerstatus_t * | rs | ) |
Called when a single local_routerstatus_t has changed: Sends an NS event to any controller that cares.
Definition at line 1670 of file control_events.c.
Referenced by mark_all_dirservers_up().
int control_event_newconsensus | ( | const networkstatus_t * | consensus | ) |
Called when we get a new consensus networkstatus. Sends a NEWCONSENSUS event consisting of an NS-style line for each relay in the consensus.
Definition at line 1594 of file control_events.c.
Referenced by notify_control_networkstatus_changed().
int control_event_or_conn_status | ( | or_connection_t * | conn, |
or_conn_status_event_t | tp, | ||
int | reason | ||
) |
Called when the status of an OR connection conn changes: tell any interested control connections. tp is the new status for the connection. If conn has just closed or failed, then reason may be the reason why.
Definition at line 922 of file control_events.c.
void control_event_pt_log | ( | const char * | log | ) |
A pluggable transport called pt_name has emitted a log message found in message at severity log level.
Definition at line 1905 of file control_events.c.
void control_event_pt_status | ( | const char * | status | ) |
A pluggable transport has emitted a STATUS message found in status.
Definition at line 1915 of file control_events.c.
int control_event_server_error | ( | const char * | format, |
... | |||
) |
Format and send an EVENT_STATUS_SERVER LOG_ERR event, and flush it to the controller(s) immediately.
Definition at line 1814 of file control_events.c.
int control_event_server_status | ( | int | severity, |
const char * | format, | ||
... | |||
) |
Format and send an EVENT_STATUS_SERVER event whose main text is obtained by formatting the arguments using the printf-style format.
Definition at line 1805 of file control_events.c.
Referenced by on_hibernate_state_change().
int control_event_signal | ( | uintptr_t | signal_num | ) |
Called when a signal has been processed from signal_callback
Definition at line 1642 of file control_events.c.
int control_event_stream_bandwidth | ( | edge_connection_t * | edge_conn | ) |
Print out STREAM_BW event for a single conn
Definition at line 970 of file control_events.c.
int control_event_stream_bandwidth_used | ( | void | ) |
A second or more has elapsed: tell any interested control connections how much bandwidth streams have used.
Definition at line 996 of file control_events.c.
Referenced by control_per_second_events().
int control_event_stream_status | ( | entry_connection_t * | conn, |
stream_status_event_t | tp, | ||
int | reason_code | ||
) |
Something has happened to the stream associated with AP connection conn: tell any interested control connections.
Definition at line 788 of file control_events.c.
Referenced by connection_ap_detach_retriable(), and remap_event_helper().
void control_event_transport_launched | ( | const char * | mode, |
const char * | transport_name, | ||
tor_addr_t * | addr, | ||
uint16_t | port | ||
) |
A new pluggable transport called transport_name was launched on addr:port. mode is either "server" or "client" depending on the mode of the pluggable transport. "650" SP "TRANSPORT_LAUNCHED" SP Mode SP Name SP Address SP Port
Definition at line 1894 of file control_events.c.
void control_per_second_events | ( | void | ) |
Run all the controller events (if any) that are scheduled to trigger once per second.
Definition at line 363 of file control_events.c.
void control_update_global_event_mask | ( | void | ) |
Set global_event_mask* to the bitwise OR of each live control connection's event_mask field.
Definition at line 206 of file control_events.c.
Referenced by connection_control_closed(), and connection_free_all().