Tor  0.4.5.0-alpha-dev
ocirc_event.h
Go to the documentation of this file.
1 /* Copyright (c) 2007-2020, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
3 
4 /**
5  * \file ocirc_event.h
6  * \brief Header file for ocirc_event.c
7  **/
8 
9 #ifndef TOR_OCIRC_EVENT_H
10 #define TOR_OCIRC_EVENT_H
11 
12 #include <stdbool.h>
13 
14 #include "lib/cc/torint.h"
15 #include "lib/pubsub/pubsub.h"
16 
17 /** Used to indicate the type of a circuit event passed to the controller.
18  * The various types are defined in control-spec.txt */
19 typedef enum circuit_status_event_t {
20  CIRC_EVENT_LAUNCHED = 0,
21  CIRC_EVENT_BUILT = 1,
22  CIRC_EVENT_EXTENDED = 2,
23  CIRC_EVENT_FAILED = 3,
24  CIRC_EVENT_CLOSED = 4,
26 
27 /** Message for origin circuit state update */
28 typedef struct ocirc_state_msg_t {
29  uint32_t gid; /**< global ID (only origin circuits have them) */
30  int state; /**< new circuit state */
31  bool onehop; /**< one-hop circuit? */
33 
34 DECLARE_MESSAGE(ocirc_state, ocirc_state, ocirc_state_msg_t *);
35 
36 /**
37  * Message when a channel gets associated to a circuit.
38  *
39  * This doesn't always correspond to something in circuitbuild.c
40  * setting the n_chan field in the circuit. For some reason, if
41  * circuit_handle_first_hop() launches a new circuit, it doesn't set
42  * the n_chan field.
43  */
44 typedef struct ocirc_chan_msg_t {
45  uint32_t gid; /**< global ID */
46  uint64_t chan; /**< channel ID */
47  bool onehop; /**< one-hop circuit? */
49 
50 DECLARE_MESSAGE(ocirc_chan, ocirc_chan, ocirc_chan_msg_t *);
51 
52 /**
53  * Message for origin circuit status event
54  *
55  * This contains information that ends up in CIRC control protocol events.
56  */
57 typedef struct ocirc_cevent_msg_t {
58  uint32_t gid; /**< global ID */
59  int evtype; /**< event type */
60  int reason; /**< reason */
61  bool onehop; /**< one-hop circuit? */
63 
64 DECLARE_MESSAGE(ocirc_cevent, ocirc_cevent, ocirc_cevent_msg_t *);
65 
66 #ifdef OCIRC_EVENT_PRIVATE
67 void ocirc_state_publish(ocirc_state_msg_t *msg);
68 void ocirc_chan_publish(ocirc_chan_msg_t *msg);
69 void ocirc_cevent_publish(ocirc_cevent_msg_t *msg);
70 #endif
71 
72 #endif /* !defined(TOR_OCIRC_EVENT_H) */
ocirc_cevent_msg_t::reason
int reason
Definition: ocirc_event.h:60
ocirc_state_msg_t::gid
uint32_t gid
Definition: ocirc_event.h:29
ocirc_state_msg_t
Definition: ocirc_event.h:28
torint.h
Integer definitions used throughout Tor.
ocirc_chan_msg_t::chan
uint64_t chan
Definition: ocirc_event.h:46
circuit_status_event_t
circuit_status_event_t
Definition: ocirc_event.h:19
ocirc_chan_msg_t::gid
uint32_t gid
Definition: ocirc_event.h:45
ocirc_chan_msg_t::onehop
bool onehop
Definition: ocirc_event.h:47
ocirc_state_msg_t::state
int state
Definition: ocirc_event.h:30
ocirc_cevent_msg_t::evtype
int evtype
Definition: ocirc_event.h:59
ocirc_cevent_msg_t::gid
uint32_t gid
Definition: ocirc_event.h:58
ocirc_cevent_msg_t
Definition: ocirc_event.h:57
pubsub.h
Header for OO publish-subscribe functionality.
DECLARE_MESSAGE
#define DECLARE_MESSAGE(messagename, typename, c_ptr_type)
Definition: pubsub_macros.h:192
ocirc_chan_msg_t
Definition: ocirc_event.h:44
ocirc_cevent_msg_t::onehop
bool onehop
Definition: ocirc_event.h:61
ocirc_state_msg_t::onehop
bool onehop
Definition: ocirc_event.h:31