Tor  0.4.7.0-alpha-dev
btrack.c
Go to the documentation of this file.
1 /* Copyright (c) 2007-2021, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
3 
4 /**
5  * \file btrack.c
6  * \brief Bootstrap trackers
7  *
8  * Initializes and shuts down the specific bootstrap trackers. These
9  * trackers help the reporting of bootstrap progress by maintaining
10  * state information about various subsystems within tor. When the
11  * correct state changes happen, these trackers emit controller
12  * events.
13  *
14  * These trackers avoid referring directly to the internals of state
15  * objects of other subsystems.
16  *
17  * btrack_circuit.c contains the tracker for origin circuits.
18  *
19  * btrack_orconn.c contains the tracker for OR connections.
20  *
21  * Eventually there will be a tracker for directory downloads as well.
22  **/
23 
27 #include "lib/pubsub/pubsub.h"
28 #include "lib/subsys/subsys.h"
29 
30 static int
31 btrack_init(void)
32 {
33  if (btrack_orconn_init())
34  return -1;
35 
36  return 0;
37 }
38 
39 static void
40 btrack_fini(void)
41 {
43  btrack_circ_fini();
44 }
45 
46 static int
47 btrack_add_pubsub(pubsub_connector_t *connector)
48 {
49  if (btrack_orconn_add_pubsub(connector))
50  return -1;
51  if (btrack_circ_add_pubsub(connector))
52  return -1;
53 
54  return 0;
55 }
56 
57 const subsys_fns_t sys_btrack = {
58  .name = "btrack",
60  .supported = true,
61  .level = 55,
62  .initialize = btrack_init,
63  .shutdown = btrack_fini,
64  .add_pubsub = btrack_add_pubsub,
65 };
Header file for btrack_circuit.c.
int btrack_orconn_init(void)
void btrack_orconn_fini(void)
Header file for btrack_orconn.c.
Declare subsystem object for the bootstrap tracker susbystem.
Header for OO publish-subscribe functionality.
struct pubsub_connector_t pubsub_connector_t
const char * name
Definition: subsys.h:43
Types used to declare a subsystem.
#define SUBSYS_DECLARE_LOCATION()
Definition: subsys.h:211