mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 06:13:31 +01:00
circ: Add hidden service helper functions
Functions to correctly identify HS circuit type and version. Part of #32020 Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
parent
21b3303657
commit
588794771f
@ -1965,25 +1965,63 @@ have_enough_path_info(int need_exit)
|
||||
int
|
||||
circuit_purpose_is_hidden_service(uint8_t purpose)
|
||||
{
|
||||
if (purpose == CIRCUIT_PURPOSE_HS_VANGUARDS) {
|
||||
/* HS Vanguard purpose. */
|
||||
if (circuit_purpose_is_hs_vanguards(purpose)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Client-side purpose */
|
||||
if (purpose >= CIRCUIT_PURPOSE_C_HS_MIN_ &&
|
||||
purpose <= CIRCUIT_PURPOSE_C_HS_MAX_) {
|
||||
if (circuit_purpose_is_hs_client(purpose)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Service-side purpose */
|
||||
if (purpose >= CIRCUIT_PURPOSE_S_HS_MIN_ &&
|
||||
purpose <= CIRCUIT_PURPOSE_S_HS_MAX_) {
|
||||
if (circuit_purpose_is_hs_service(purpose)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Retrun true iff the given circuit is an HS client circuit. */
|
||||
bool
|
||||
circuit_purpose_is_hs_client(const uint8_t purpose)
|
||||
{
|
||||
return (purpose >= CIRCUIT_PURPOSE_C_HS_MIN_ &&
|
||||
purpose <= CIRCUIT_PURPOSE_C_HS_MAX_);
|
||||
}
|
||||
|
||||
/** Retrun true iff the given circuit is an HS service circuit. */
|
||||
bool
|
||||
circuit_purpose_is_hs_service(const uint8_t purpose)
|
||||
{
|
||||
return (purpose >= CIRCUIT_PURPOSE_S_HS_MIN_ &&
|
||||
purpose <= CIRCUIT_PURPOSE_S_HS_MAX_);
|
||||
}
|
||||
|
||||
/** Retrun true iff the given circuit is an HS Vanguards circuit. */
|
||||
bool
|
||||
circuit_purpose_is_hs_vanguards(const uint8_t purpose)
|
||||
{
|
||||
return (purpose == CIRCUIT_PURPOSE_HS_VANGUARDS);
|
||||
}
|
||||
|
||||
/** Retrun true iff the given circuit is an HS v2 circuit. */
|
||||
bool
|
||||
circuit_is_hs_v2(const circuit_t *circ)
|
||||
{
|
||||
return (CIRCUIT_IS_ORIGIN(circ) &&
|
||||
(CONST_TO_ORIGIN_CIRCUIT(circ)->rend_data != NULL));
|
||||
}
|
||||
|
||||
/** Retrun true iff the given circuit is an HS v3 circuit. */
|
||||
bool
|
||||
circuit_is_hs_v3(const circuit_t *circ)
|
||||
{
|
||||
return (CIRCUIT_IS_ORIGIN(circ) &&
|
||||
(CONST_TO_ORIGIN_CIRCUIT(circ)->hs_ident != NULL));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if this circuit purpose should use vanguards
|
||||
* or pinned Layer2 or Layer3 guards.
|
||||
|
@ -64,6 +64,15 @@ int hostname_in_track_host_exits(const or_options_t *options,
|
||||
void mark_circuit_unusable_for_new_conns(origin_circuit_t *circ);
|
||||
|
||||
int circuit_purpose_is_hidden_service(uint8_t);
|
||||
|
||||
/* Series of helper functions for hidden services. */
|
||||
bool circuit_purpose_is_hs_client(const uint8_t purpose);
|
||||
bool circuit_purpose_is_hs_service(const uint8_t purpose);
|
||||
bool circuit_purpose_is_hs_vanguards(const uint8_t purpose);
|
||||
|
||||
bool circuit_is_hs_v2(const circuit_t *circ);
|
||||
bool circuit_is_hs_v3(const circuit_t *circ);
|
||||
|
||||
int circuit_should_use_vanguards(uint8_t);
|
||||
void circuit_sent_valid_data(origin_circuit_t *circ, uint16_t relay_body_len);
|
||||
void circuit_read_valid_data(origin_circuit_t *circ, uint16_t relay_body_len);
|
||||
|
Loading…
Reference in New Issue
Block a user