Tor 0.4.9.0-alpha-dev
ocirc_event.h
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 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 */
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 */
28typedef 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
34DECLARE_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 */
44typedef struct ocirc_chan_msg_t {
45 uint32_t gid; /**< global ID */
46 uint64_t chan; /**< channel ID */
47 bool onehop; /**< one-hop circuit? */
49
50DECLARE_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 */
57typedef 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
64DECLARE_MESSAGE(ocirc_cevent, ocirc_cevent, ocirc_cevent_msg_t *);
65
66#ifdef OCIRC_EVENT_PRIVATE
67void ocirc_state_publish(ocirc_state_msg_t *msg);
68void ocirc_chan_publish(ocirc_chan_msg_t *msg);
69void ocirc_cevent_publish(ocirc_cevent_msg_t *msg);
70#endif
71
72#endif /* !defined(TOR_OCIRC_EVENT_H) */
circuit_status_event_t
Definition: ocirc_event.h:19
Header for OO publish-subscribe functionality.
#define DECLARE_MESSAGE(messagename, typename, c_ptr_type)
Integer definitions used throughout Tor.