tor/src/feature/control/btrack_orconn.h

42 lines
1.2 KiB
C

/* Copyright (c) 2007-2020, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
* \file btrack_orconn.h
* \brief Header file for btrack_orconn.c
**/
#ifndef TOR_BTRACK_ORCONN_H
#define TOR_BTRACK_ORCONN_H
#include "lib/pubsub/pubsub.h"
#ifdef BTRACK_ORCONN_PRIVATE
#include "ht.h"
/**
* Structure for tracking OR connection states
*
* This gets linked into two hash maps: one with connection IDs, and
* another with channel IDs.
**/
typedef struct bt_orconn_t {
HT_ENTRY(bt_orconn_t) node; /**< Hash map entry indexed by gid */
HT_ENTRY(bt_orconn_t) chan_node; /**< Hash map entry indexed by channel ID */
uint64_t gid; /**< Global ID of this ORCONN */
uint64_t chan; /**< Channel ID, if known */
int proxy_type; /**< Proxy type */
uint8_t state; /**< State of this ORCONN */
bool is_orig; /**< Does this carry an origin circuit? */
bool is_onehop; /**< Is this for a one-hop circuit? */
} bt_orconn_t;
#endif /* defined(BTRACK_ORCONN_PRIVATE) */
int btrack_orconn_init(void);
int btrack_orconn_add_pubsub(pubsub_connector_t *);
void btrack_orconn_fini(void);
#endif /* !defined(TOR_BTRACK_ORCONN_H) */