|
@@ -3231,20 +3231,33 @@ typedef struct or_circuit_rendinfo_s {
|
|
/** Convert a circuit_t* to a pointer to the enclosing or_circuit_t. Assert
|
|
/** Convert a circuit_t* to a pointer to the enclosing or_circuit_t. Assert
|
|
* if the cast is impossible. */
|
|
* if the cast is impossible. */
|
|
static or_circuit_t *TO_OR_CIRCUIT(circuit_t *);
|
|
static or_circuit_t *TO_OR_CIRCUIT(circuit_t *);
|
|
|
|
+static const or_circuit_t *CONST_TO_OR_CIRCUIT(const circuit_t *);
|
|
/** Convert a circuit_t* to a pointer to the enclosing origin_circuit_t.
|
|
/** Convert a circuit_t* to a pointer to the enclosing origin_circuit_t.
|
|
* Assert if the cast is impossible. */
|
|
* Assert if the cast is impossible. */
|
|
static origin_circuit_t *TO_ORIGIN_CIRCUIT(circuit_t *);
|
|
static origin_circuit_t *TO_ORIGIN_CIRCUIT(circuit_t *);
|
|
|
|
+static const origin_circuit_t *CONST_TO_ORIGIN_CIRCUIT(const circuit_t *);
|
|
|
|
|
|
static INLINE or_circuit_t *TO_OR_CIRCUIT(circuit_t *x)
|
|
static INLINE or_circuit_t *TO_OR_CIRCUIT(circuit_t *x)
|
|
{
|
|
{
|
|
tor_assert(x->magic == OR_CIRCUIT_MAGIC);
|
|
tor_assert(x->magic == OR_CIRCUIT_MAGIC);
|
|
return DOWNCAST(or_circuit_t, x);
|
|
return DOWNCAST(or_circuit_t, x);
|
|
}
|
|
}
|
|
|
|
+static INLINE const or_circuit_t *CONST_TO_OR_CIRCUIT(const circuit_t *x)
|
|
|
|
+{
|
|
|
|
+ tor_assert(x->magic == OR_CIRCUIT_MAGIC);
|
|
|
|
+ return DOWNCAST(or_circuit_t, x);
|
|
|
|
+}
|
|
static INLINE origin_circuit_t *TO_ORIGIN_CIRCUIT(circuit_t *x)
|
|
static INLINE origin_circuit_t *TO_ORIGIN_CIRCUIT(circuit_t *x)
|
|
{
|
|
{
|
|
tor_assert(x->magic == ORIGIN_CIRCUIT_MAGIC);
|
|
tor_assert(x->magic == ORIGIN_CIRCUIT_MAGIC);
|
|
return DOWNCAST(origin_circuit_t, x);
|
|
return DOWNCAST(origin_circuit_t, x);
|
|
}
|
|
}
|
|
|
|
+static INLINE const origin_circuit_t *CONST_TO_ORIGIN_CIRCUIT(
|
|
|
|
+ const circuit_t *x)
|
|
|
|
+{
|
|
|
|
+ tor_assert(x->magic == ORIGIN_CIRCUIT_MAGIC);
|
|
|
|
+ return DOWNCAST(origin_circuit_t, x);
|
|
|
|
+}
|
|
|
|
|
|
/** Bitfield type: things that we're willing to use invalid routers for. */
|
|
/** Bitfield type: things that we're willing to use invalid routers for. */
|
|
typedef enum invalid_router_usage_t {
|
|
typedef enum invalid_router_usage_t {
|