tor  0.4.1.0-alpha-dev
control.h
Go to the documentation of this file.
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-2019, The Tor Project, Inc. */
5 /* See LICENSE for licensing information */
6 
12 #ifndef TOR_CONTROL_H
13 #define TOR_CONTROL_H
14 
15 #include "core/or/ocirc_event.h"
16 
20  CIRC_MINOR_EVENT_PURPOSE_CHANGED,
21  CIRC_MINOR_EVENT_CANNIBALIZED,
23 
24 #include "core/or/orconn_event.h"
25 
28 typedef enum stream_status_event_t {
29  STREAM_EVENT_SENT_CONNECT = 0,
30  STREAM_EVENT_SENT_RESOLVE = 1,
31  STREAM_EVENT_SUCCEEDED = 2,
32  STREAM_EVENT_FAILED = 3,
33  STREAM_EVENT_CLOSED = 4,
34  STREAM_EVENT_NEW = 5,
35  STREAM_EVENT_NEW_RESOLVE = 6,
36  STREAM_EVENT_FAILED_RETRIABLE = 7,
37  STREAM_EVENT_REMAP = 8
39 
42  BUILDTIMEOUT_SET_EVENT_COMPUTED = 0,
43  BUILDTIMEOUT_SET_EVENT_RESET = 1,
44  BUILDTIMEOUT_SET_EVENT_SUSPENDED = 2,
45  BUILDTIMEOUT_SET_EVENT_DISCARD = 3,
46  BUILDTIMEOUT_SET_EVENT_RESUME = 4
48 
51 typedef enum {
52  BOOTSTRAP_STATUS_UNDEF=-1,
53  BOOTSTRAP_STATUS_STARTING=0,
54 
55  /* Initial connection to any relay */
56 
57  BOOTSTRAP_STATUS_CONN_PT=1,
58  BOOTSTRAP_STATUS_CONN_DONE_PT=2,
59  BOOTSTRAP_STATUS_CONN_PROXY=3,
60  BOOTSTRAP_STATUS_CONN_DONE_PROXY=4,
61  BOOTSTRAP_STATUS_CONN=5,
62  BOOTSTRAP_STATUS_CONN_DONE=10,
63  BOOTSTRAP_STATUS_HANDSHAKE=14,
64  BOOTSTRAP_STATUS_HANDSHAKE_DONE=15,
65 
66  /* Loading directory info */
67 
68  BOOTSTRAP_STATUS_ONEHOP_CREATE=20,
69  BOOTSTRAP_STATUS_REQUESTING_STATUS=25,
70  BOOTSTRAP_STATUS_LOADING_STATUS=30,
71  BOOTSTRAP_STATUS_LOADING_KEYS=40,
72  BOOTSTRAP_STATUS_REQUESTING_DESCRIPTORS=45,
73  BOOTSTRAP_STATUS_LOADING_DESCRIPTORS=50,
74  BOOTSTRAP_STATUS_ENOUGH_DIRINFO=75,
75 
76  /* Connecting to a relay for AP circuits */
77 
78  BOOTSTRAP_STATUS_AP_CONN_PT=76,
79  BOOTSTRAP_STATUS_AP_CONN_DONE_PT=77,
80  BOOTSTRAP_STATUS_AP_CONN_PROXY=78,
81  BOOTSTRAP_STATUS_AP_CONN_DONE_PROXY=79,
82  BOOTSTRAP_STATUS_AP_CONN=80,
83  BOOTSTRAP_STATUS_AP_CONN_DONE=85,
84  BOOTSTRAP_STATUS_AP_HANDSHAKE=89,
85  BOOTSTRAP_STATUS_AP_HANDSHAKE_DONE=90,
86 
87  /* Creating AP circuits */
88 
89  BOOTSTRAP_STATUS_CIRCUIT_CREATE=95,
90  BOOTSTRAP_STATUS_DONE=100
92 
94 
95 #define CONTROL_CONN_STATE_MIN_ 1
96 
97 #define CONTROL_CONN_STATE_OPEN 1
98 
100 #define CONTROL_CONN_STATE_NEEDAUTH 2
101 #define CONTROL_CONN_STATE_MAX_ 2
102 
105 #define REMAP_STREAM_SOURCE_CACHE 1
106 
108 #define REMAP_STREAM_SOURCE_EXIT 2
109 
110 void control_initialize_event_queue(void);
111 
114 
115 void control_ports_write_to_file(void);
116 
122 #define LOG_FN_CONN(conn, args) \
123  CONN_LOG_PROTECT(conn, log_fn args)
124 
125 #define CC_LOCAL_FD_IS_OWNER (1u<<0)
126 #define CC_LOCAL_FD_IS_AUTHENTICATED (1u<<1)
127 int control_connection_add_local_fd(tor_socket_t sock, unsigned flags);
128 
132 
134 
135 #define EVENT_NS 0x000F
136 int control_event_is_interesting(int event);
137 
138 void control_per_second_events(void);
140 
142  circuit_status_event_t e, int reason);
144  int old_purpose);
146  int old_purpose,
147  const struct timeval *old_tv_created);
150  int reason);
152  or_conn_status_event_t e, int reason);
153 int control_event_bandwidth_used(uint32_t n_read, uint32_t n_written);
161 void control_event_logmsg(int severity, uint32_t domain, const char *msg);
164 int control_event_address_mapped(const char *from, const char *to,
165  time_t expires, const char *error,
166  const int cached);
168 int control_event_network_liveness_update(int liveness);
170 
171 int control_event_newconsensus(const networkstatus_t *consensus);
173 int control_event_general_status(int severity, const char *format, ...)
174  CHECK_PRINTF(2,3);
175 int control_event_client_status(int severity, const char *format, ...)
176  CHECK_PRINTF(2,3);
177 int control_event_server_status(int severity, const char *format, ...)
178  CHECK_PRINTF(2,3);
179 
180 int control_event_general_error(const char *format, ...)
181  CHECK_PRINTF(1,2);
182 int control_event_client_error(const char *format, ...)
183  CHECK_PRINTF(1,2);
184 int control_event_server_error(const char *format, ...)
185  CHECK_PRINTF(1,2);
186 
187 int control_event_guard(const char *nickname, const char *digest,
188  const char *status);
189 int control_event_conf_changed(const smartlist_t *elements);
191  const char *args);
192 int control_event_signal(uintptr_t signal);
193 
194 int init_control_cookie_authentication(int enabled);
196 struct config_line_t;
198 void disable_control_logging(void);
199 void enable_control_logging(void);
200 
201 void monitor_owning_controller_process(const char *process_spec);
202 
203 void control_event_bootstrap(bootstrap_status_t status, int progress);
204 MOCK_DECL(void, control_event_bootstrap_prob_or,(const char *warn,
205  int reason,
206  or_connection_t *or_conn));
207 void control_event_boot_dir(bootstrap_status_t status, int progress);
209 void control_event_bootstrap_problem(const char *warn, const char *reason,
210  const connection_t *conn, int dowarn);
211 char *control_event_boot_last_msg(void);
213 
214 void control_event_clients_seen(const char *controller_str);
215 void control_event_transport_launched(const char *mode,
216  const char *transport_name,
217  tor_addr_t *addr, uint16_t port);
218 void control_event_pt_log(const char *log);
219 void control_event_pt_status(const char *status);
220 const char *rend_auth_type_to_string(rend_auth_type_t auth_type);
221 MOCK_DECL(const char *, node_describe_longname_by_id,(const char *id_digest));
222 void control_event_hs_descriptor_requested(const char *onion_address,
223  rend_auth_type_t auth_type,
224  const char *id_digest,
225  const char *desc_id,
226  const char *hsdir_index);
227 void control_event_hs_descriptor_created(const char *onion_address,
228  const char *desc_id,
229  int replica);
230 void control_event_hs_descriptor_upload(const char *onion_address,
231  const char *desc_id,
232  const char *hs_dir,
233  const char *hsdir_index);
234 void control_event_hs_descriptor_upload_end(const char *action,
235  const char *onion_address,
236  const char *hs_dir,
237  const char *reason);
238 void control_event_hs_descriptor_uploaded(const char *hs_dir,
239  const char *onion_address);
240 /* Hidden service v2 HS_DESC specific. */
242  const char *id_digest,
243  const char *reason);
244 void control_event_hsv2_descriptor_received(const char *onion_address,
245  const rend_data_t *rend_data,
246  const char *id_digest);
247 /* Hidden service v3 HS_DESC specific. */
248 void control_event_hsv3_descriptor_failed(const char *onion_address,
249  const char *desc_id,
250  const char *hsdir_id_digest,
251  const char *reason);
252 void control_event_hsv3_descriptor_received(const char *onion_address,
253  const char *desc_id,
254  const char *hsdir_id_digest);
255 void control_event_hs_descriptor_upload_failed(const char *hs_dir,
256  const char *onion_address,
257  const char *reason);
258 void control_event_hs_descriptor_content(const char *onion_address,
259  const char *desc_id,
260  const char *hsdir_fp,
261  const char *content);
262 void control_free_all(void);
263 
264 #ifdef CONTROL_PRIVATE
266 
267 /* Recognized asynchronous event types. It's okay to expand this list
268  * because it is used both as a list of v0 event types, and as indices
269  * into the bitfield to determine which controllers want which events.
270  */
271 /* This bitfield has no event zero 0x0000 */
272 #define EVENT_MIN_ 0x0001
273 #define EVENT_CIRCUIT_STATUS 0x0001
274 #define EVENT_STREAM_STATUS 0x0002
275 #define EVENT_OR_CONN_STATUS 0x0003
276 #define EVENT_BANDWIDTH_USED 0x0004
277 #define EVENT_CIRCUIT_STATUS_MINOR 0x0005
278 #define EVENT_NEW_DESC 0x0006
279 #define EVENT_DEBUG_MSG 0x0007
280 #define EVENT_INFO_MSG 0x0008
281 #define EVENT_NOTICE_MSG 0x0009
282 #define EVENT_WARN_MSG 0x000A
283 #define EVENT_ERR_MSG 0x000B
284 #define EVENT_ADDRMAP 0x000C
285 /* There was an AUTHDIR_NEWDESCS event, but it no longer exists. We
286  can reclaim 0x000D. */
287 #define EVENT_DESCCHANGED 0x000E
288 /* Exposed above */
289 // #define EVENT_NS 0x000F
290 #define EVENT_STATUS_CLIENT 0x0010
291 #define EVENT_STATUS_SERVER 0x0011
292 #define EVENT_STATUS_GENERAL 0x0012
293 #define EVENT_GUARD 0x0013
294 #define EVENT_STREAM_BANDWIDTH_USED 0x0014
295 #define EVENT_CLIENTS_SEEN 0x0015
296 #define EVENT_NEWCONSENSUS 0x0016
297 #define EVENT_BUILDTIMEOUT_SET 0x0017
298 #define EVENT_GOT_SIGNAL 0x0018
299 #define EVENT_CONF_CHANGED 0x0019
300 #define EVENT_CONN_BW 0x001A
301 #define EVENT_CELL_STATS 0x001B
302 /* UNUSED : 0x001C */
303 #define EVENT_CIRC_BANDWIDTH_USED 0x001D
304 #define EVENT_TRANSPORT_LAUNCHED 0x0020
305 #define EVENT_HS_DESC 0x0021
306 #define EVENT_HS_DESC_CONTENT 0x0022
307 #define EVENT_NETWORK_LIVENESS 0x0023
308 #define EVENT_PT_LOG 0x0024
309 #define EVENT_PT_STATUS 0x0025
310 #define EVENT_MAX_ 0x0025
311 
312 /* sizeof(control_connection_t.event_mask) in bits, currently a uint64_t */
313 #define EVENT_CAPACITY_ 0x0040
314 
315 /* If EVENT_MAX_ ever hits 0x0040, we need to make the mask into a
316  * different structure, as it can only handle a maximum left shift of 1<<63. */
317 
318 #if EVENT_MAX_ >= EVENT_CAPACITY_
319 #error control_connection_t.event_mask has an event greater than its capacity
320 #endif
321 
322 #define EVENT_MASK_(e) (((uint64_t)1)<<(e))
323 
324 #define EVENT_MASK_NONE_ ((uint64_t)0x0)
325 
326 #define EVENT_MASK_ABOVE_MIN_ ((~((uint64_t)0x0)) << EVENT_MIN_)
327 #define EVENT_MASK_BELOW_MAX_ ((~((uint64_t)0x0)) \
328  >> (EVENT_CAPACITY_ - EVENT_MAX_ \
329  - EVENT_MIN_))
330 
331 #define EVENT_MASK_ALL_ (EVENT_MASK_ABOVE_MIN_ \
332  & EVENT_MASK_BELOW_MAX_)
333 
334 /* Used only by control.c and test.c */
335 STATIC size_t write_escaped_data(const char *data, size_t len, char **out);
336 STATIC size_t read_escaped_data(const char *data, size_t len, char **out);
337 
338 #ifdef TOR_UNIT_TESTS
339 MOCK_DECL(STATIC void,
340  send_control_event_string,(uint16_t event, const char *msg));
341 
342 MOCK_DECL(STATIC void,
343  queue_control_event_string,(uint16_t event, char *msg));
344 
345 void control_testing_set_global_event_mask(uint64_t mask);
346 #endif /* defined(TOR_UNIT_TESTS) */
347 
349 typedef struct cell_stats_t {
351  uint64_t added_cells_appward[CELL_COMMAND_MAX_ + 1];
353  uint64_t added_cells_exitward[CELL_COMMAND_MAX_ + 1];
355  uint64_t removed_cells_appward[CELL_COMMAND_MAX_ + 1];
357  uint64_t removed_cells_exitward[CELL_COMMAND_MAX_ + 1];
359  uint64_t total_time_appward[CELL_COMMAND_MAX_ + 1];
361  uint64_t total_time_exitward[CELL_COMMAND_MAX_ + 1];
362 } cell_stats_t;
364  cell_stats_t *cell_stats);
365 void append_cell_stats_by_command(smartlist_t *event_parts,
366  const char *key,
367  const uint64_t *include_if_non_zero,
368  const uint64_t *number_to_include);
369 void format_cell_stats(char **event_string, circuit_t *circ,
370  cell_stats_t *cell_stats);
371 STATIC char *get_bw_samples(void);
372 
373 /* ADD_ONION secret key to create an ephemeral service. The command supports
374  * multiple versions so this union stores the key and passes it to the HS
375  * subsystem depending on the requested version. */
376 typedef union add_onion_secret_key_t {
377  /* Hidden service v2 secret key. */
378  crypto_pk_t *v2;
379  /* Hidden service v3 secret key. */
381 } add_onion_secret_key_t;
382 
383 STATIC int add_onion_helper_keyarg(const char *arg, int discard_pk,
384  const char **key_new_alg_out,
385  char **key_new_blob_out,
386  add_onion_secret_key_t *decoded_key,
387  int *hs_version, char **err_msg_out);
388 
390 add_onion_helper_clientauth(const char *arg, int *created, char **err_msg_out);
391 
392 STATIC int getinfo_helper_onions(
393  control_connection_t *control_conn,
394  const char *question,
395  char **answer,
396  const char **errmsg);
398  const char *flavor,
399  download_status_t **dl_to_emit,
400  const char **errmsg);
402  const char *fp_sk_req,
403  download_status_t **dl_to_emit,
404  smartlist_t **digest_list,
405  const char **errmsg);
407  const char *desc_req,
408  download_status_t **dl_to_emit,
409  smartlist_t **digest_list,
410  const char **errmsg);
412  const char *bridge_req,
413  download_status_t **dl_to_emit,
414  smartlist_t **digest_list,
415  const char **errmsg);
416 STATIC int getinfo_helper_downloads(
417  control_connection_t *control_conn,
418  const char *question, char **answer,
419  const char **errmsg);
420 STATIC int getinfo_helper_dir(
421  control_connection_t *control_conn,
422  const char *question, char **answer,
423  const char **errmsg);
424 STATIC int getinfo_helper_current_time(
425  control_connection_t *control_conn,
426  const char *question, char **answer,
427  const char **errmsg);
428 
429 #endif /* defined(CONTROL_PRIVATE) */
430 
431 #endif /* !defined(TOR_CONTROL_H) */
char * control_event_boot_last_msg(void)
int connection_control_finished_flushing(control_connection_t *conn)
Definition: control.c:5268
STATIC int add_onion_helper_keyarg(const char *arg, int discard_pk, const char **key_new_alg_out, char **key_new_blob_out, add_onion_secret_key_t *decoded_key, int *hs_version, char **err_msg_out)
Definition: control.c:4994
void control_adjust_event_log_severity(void)
Definition: control.c:376
void control_event_boot_first_orconn(void)
void format_cell_stats(char **event_string, circuit_t *circ, cell_stats_t *cell_stats)
Definition: control.c:6250
int connection_control_reached_eof(control_connection_t *conn)
Definition: control.c:5276
bootstrap_status_t
Definition: control.h:51
void control_event_bootstrap_reset(void)
int control_any_per_second_event_enabled(void)
Definition: control.c:420
int control_event_stream_bandwidth_used(void)
Definition: control.c:6040
STATIC void getinfo_helper_downloads_cert(const char *fp_sk_req, download_status_t **dl_to_emit, smartlist_t **digest_list, const char **errmsg)
Definition: control.c:2560
int control_connection_add_local_fd(tor_socket_t sock, unsigned flags)
Definition: control.c:682
void control_event_transport_launched(const char *mode, const char *transport_name, tor_addr_t *addr, uint16_t port)
Definition: control.c:7045
int control_event_descriptors_changed(smartlist_t *routers)
Definition: control.c:6474
int control_event_circ_bandwidth_used(void)
Definition: control.c:6076
int int int int int int int control_event_guard(const char *nickname, const char *digest, const char *status)
Definition: control.c:6868
void control_ports_write_to_file(void)
Definition: control.c:744
void sum_up_cell_stats_by_command(circuit_t *circ, cell_stats_t *cell_stats)
Definition: control.c:6194
int control_event_circuit_status(origin_circuit_t *circ, circuit_status_event_t e, int reason)
Definition: control.c:5639
int control_event_networkstatus_changed(smartlist_t *statuses)
Definition: control.c:6621
int control_event_my_descriptor_changed(void)
Definition: control.c:6735
void control_event_bootstrap_problem(const char *warn, const char *reason, const connection_t *conn, int dowarn)
int control_event_general_error(const char *format,...)
Definition: control.c:6816
int control_event_conn_bandwidth(connection_t *conn)
Definition: control.c:6144
smartlist_t * decode_hashed_passwords(struct config_line_t *passwords)
Definition: control.c:1411
STATIC size_t read_escaped_data(const char *data, size_t len, char **out)
Definition: control.c:551
void control_event_clients_seen(const char *controller_str)
Definition: control.c:7032
STATIC void getinfo_helper_downloads_networkstatus(const char *flavor, download_status_t **dl_to_emit, const char **errmsg)
Definition: control.c:2531
STATIC void getinfo_helper_downloads_bridge(const char *bridge_req, download_status_t **dl_to_emit, smartlist_t **digest_list, const char **errmsg)
Definition: control.c:2706
Header file for orconn_event.c.
rend_auth_type_t
Definition: or.h:402
void control_event_logmsg(int severity, uint32_t domain, const char *msg)
Definition: control.c:6401
char * get_controller_cookie_file_name(void)
Definition: control.c:6926
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)
Definition: control.c:6225
int control_event_signal(uintptr_t signal)
Definition: control.c:6677
void control_event_hsv3_descriptor_failed(const char *onion_address, const char *desc_id, const char *hsdir_id_digest, const char *reason)
Definition: control.c:7459
STATIC int getinfo_helper_onions(control_connection_t *control_conn, const char *question, char **answer, const char **errmsg)
Definition: control.c:3150
buildtimeout_set_event_t
Definition: control.h:41
int control_event_general_status(int severity, const char *format,...)
Definition: control.c:6807
control_connection_t * TO_CONTROL_CONN(connection_t *)
Definition: control.c:266
int control_event_conn_bandwidth_used(void)
Definition: control.c:6179
void control_event_hs_descriptor_upload_failed(const char *hs_dir, const char *onion_address, const char *reason)
Definition: control.c:7522
int control_event_circ_bandwidth_used_for_circ(origin_circuit_t *ocirc)
Definition: control.c:6101
void enable_control_logging(void)
Definition: control.c:6393
void control_event_pt_status(const char *status)
Definition: control.c:7066
int control_event_address_mapped(const char *from, const char *to, time_t expires, const char *error, const int cached)
Definition: control.c:6506
void connection_control_closed(control_connection_t *conn)
Definition: control.c:5298
void control_update_global_event_mask(void)
Definition: control.c:320
int control_event_networkstatus_changed_single(const routerstatus_t *rs)
Definition: control.c:6717
void control_event_boot_dir(bootstrap_status_t status, int progress)
STATIC void getinfo_helper_downloads_desc(const char *desc_req, download_status_t **dl_to_emit, smartlist_t **digest_list, const char **errmsg)
Definition: control.c:2660
STATIC int getinfo_helper_dir(control_connection_t *control_conn, const char *question, char **answer, const char **errmsg)
Definition: control.c:2118
Header for crypto_ed25519.c.
void control_event_logmsg_pending(void)
Definition: control.c:6456
void control_event_hsv2_descriptor_received(const char *onion_address, const rend_data_t *rend_data, const char *id_digest)
Definition: control.c:7353
void disable_control_logging(void)
Definition: control.c:6385
#define tor_socket_t
Definition: nettypes.h:36
STATIC int getinfo_helper_downloads(control_connection_t *control_conn, const char *question, char **answer, const char **errmsg)
Definition: control.c:2749
int control_event_circuit_purpose_changed(origin_circuit_t *circ, int old_purpose)
Definition: control.c:5769
int control_event_stream_bandwidth(edge_connection_t *edge_conn)
Definition: control.c:6014
STATIC size_t write_escaped_data(const char *data, size_t len, char **out)
Definition: control.c:495
STATIC rend_authorized_client_t * add_onion_helper_clientauth(const char *arg, int *created, char **err_msg)
Definition: control.c:5130
int control_event_server_status(int severity, const char *format,...)
Definition: control.c:6847
int control_event_stream_status(entry_connection_t *conn, stream_status_event_t e, int reason)
Definition: control.c:5819
int control_event_newconsensus(const networkstatus_t *consensus)
Definition: control.c:6629
int connection_control_process_inbuf(control_connection_t *conn)
Definition: control.c:5395
void control_event_hsv2_descriptor_failed(const rend_data_t *rend_data, const char *id_digest, const char *reason)
Definition: control.c:7425
void control_event_hs_descriptor_uploaded(const char *hs_dir, const char *onion_address)
Definition: control.c:7408
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)
Definition: control.c:7143
const char * rend_auth_type_to_string(rend_auth_type_t auth_type)
Definition: control.c:7076
stream_status_event_t
Definition: control.h:28
void control_event_bootstrap(bootstrap_status_t status, int progress)
int control_event_buildtimeout_set(buildtimeout_set_event_t type, const char *args)
Definition: control.c:6639
int control_event_client_error(const char *format,...)
Definition: control.c:6836
void control_event_hs_descriptor_upload(const char *onion_address, const char *desc_id, const char *hs_dir, const char *hsdir_index)
Definition: control.c:7249
#define MOCK_DECL(rv, funcname, arglist)
Definition: testsupport.h:94
STATIC int getinfo_helper_current_time(control_connection_t *control_conn, const char *question, char **answer, const char **errmsg)
Definition: control.c:2093
void control_event_hs_descriptor_content(const char *onion_address, const char *desc_id, const char *hsdir_fp, const char *content)
Definition: control.c:7485
void control_event_hs_descriptor_created(const char *onion_address, const char *desc_id, int replica)
Definition: control.c:7221
Header file for ocirc_event.c.
void control_free_all(void)
Definition: control.c:7535
int control_event_client_status(int severity, const char *format,...)
Definition: control.c:6827
int control_event_circuit_cannibalized(origin_circuit_t *circ, int old_purpose, const struct timeval *old_tv_created)
Definition: control.c:5783
int control_event_is_interesting(int event)
Definition: control.c:413
int control_event_bandwidth_used(uint32_t n_read, uint32_t n_written)
Definition: control.c:6333
circuit_status_minor_event_t
Definition: control.h:19
int control_event_network_liveness_update(int liveness)
Definition: control.c:6555
void control_per_second_events(void)
Definition: control.c:462
int control_event_server_error(const char *format,...)
Definition: control.c:6856
or_conn_status_event_t
Definition: orconn_event.h:57
int control_event_circuit_cell_stats(void)
Definition: control.c:6297
void control_event_pt_log(const char *log)
Definition: control.c:7056
int control_event_or_conn_status(or_connection_t *conn, or_conn_status_event_t e, int reason)
Definition: control.c:5966
void monitor_owning_controller_process(const char *process_spec)
Definition: control.c:6981
void control_event_hs_descriptor_upload_end(const char *action, const char *onion_address, const char *hs_dir, const char *reason)
Definition: control.c:7323
circuit_status_event_t
Definition: ocirc_event.h:18
int control_event_conf_changed(const smartlist_t *elements)
Definition: control.c:6895