tor_addr_port_t orports[EXTEND_INFO_MAX_ADDRS];
/** Ntor onion key for this hop. */
curve25519_public_key_t curve25519_onion_key;
+ /** True if this hop supports ntor v3. */
+ bool supports_ntor_v3;
/** True if this hop is to be used as an _exit_,
* and it also supports supports NtorV3 _and_ negotiation
* of congestion control parameters */
}
if (pv) {
+ info->supports_ntor_v3 = pv->supports_ntor_v3;
+
// XXXX cgo Decide whether to set this!
info->enable_cgo = pv->supports_cgo;
}
extend_info_supports_ntor_v3(const extend_info_t *ei)
{
tor_assert(ei);
- return extend_info_supports_ntor(ei) &&
- ei->exit_supports_congestion_control;
+ return ei->supports_ntor_v3;
}
/* Does ei have an onion key which it would prefer to use?
/** True iff this router supports CGO. */
unsigned int supports_cgo : 1;
+
+ /** True iff this router supports ntorv3 */
+ unsigned int supports_ntor_v3 : 1;
} protover_summary_flags_t;
typedef struct routerinfo_t routerinfo_t;
protocol_list_supports_protocol(protocols, PRT_CONFLUX,
PROTOVER_CONFLUX_V1);
+ out->supports_ntor_v3 =
+ protocol_list_supports_protocol(protocols, PRT_RELAY,
+ PROTOVER_RELAY_NTOR_V3);
+
/* CGO requires congestion control and subproto negotiation. */
out->supports_cgo =
protocol_list_supports_protocol(protocols, PRT_FLOWCTRL,
/** Dummy object that should be unreturnable. Used to ensure that
* node_get_protover_summary_flags() always returns non-NULL. */
static const protover_summary_flags_t zero_protover_flags = {
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
/** Return the protover_summary_flags for a given node. */
uint8_t client_keys[CELL_PAYLOAD_SIZE];
uint8_t rend_auth[DIGEST_LEN];
+ info.supports_ntor_v3 = true;
info.exit_supports_congestion_control = 1;
unhex(relay_onion_key.seckey.secret_key,