Protover flag handling for congestion control negotiation

This commit is contained in:
Mike Perry 2021-11-04 00:47:19 +00:00
parent 76bdadce12
commit 1b1c261080
4 changed files with 14 additions and 15 deletions

View file

@ -732,10 +732,9 @@ typedef struct protover_summary_flags_t {
* negotiate hs circuit setup padding. Requires Padding=2. */
unsigned int supports_hs_setup_padding : 1;
/** True iff this router supports ntor3 _and_ supports negotiating
* additional circuit parameters via the handshake used in ntor3.
*/
unsigned int supports_ntor3_and_param_negotiation : 1;
/** True iff this router supports congestion control.
* Requires both FlowCtrl=2 *and* Relay=4 */
unsigned int supports_congestion_control : 1;
} protover_summary_flags_t;
typedef struct routerinfo_t routerinfo_t;

View file

@ -430,13 +430,11 @@ protover_get_supported_protocols(void)
* XXX: WARNING!
*/
/* TODO-324: Add a new Relay=* and a new FlowCtrl=* version to indicate
* support for Ntorv3 and prop324. Make sure they get into the spec. */
return
"Cons=1-2 "
"Desc=1-2 "
"DirCache=2 "
"FlowCtrl=1 "
"FlowCtrl=1-2 "
"HSDir=2 "
"HSIntro=4-5 "
"HSRend=1-2 "
@ -448,7 +446,7 @@ protover_get_supported_protocols(void)
#endif
"Microdesc=1-2 "
"Padding=2 "
"Relay=1-3";
"Relay=1-4";
}
/*

View file

@ -35,6 +35,8 @@ struct smartlist_t;
/** The protover version number where relays can consider IPv6 connections
* canonical */
#define PROTOVER_RELAY_CANONICAL_IPV6 3
/** The protover version number where relays can accept ntorv3 */
#define PROTOVER_RELAY_NTOR_V3 4
/** The protover version number that signifies HSv3 intro point support */
#define PROTOVER_HS_INTRO_V3 4
@ -51,6 +53,9 @@ struct smartlist_t;
/** The protover that signals support for HS circuit setup padding machines */
#define PROTOVER_HS_SETUP_PADDING 2
/** The protover that signals support for congestion control */
#define PROTOVER_FLOWCTRL_CC 2
/** List of recognized subprotocols. */
/// C_RUST_COUPLED: src/rust/protover/ffi.rs `translate_to_rust`
/// C_RUST_COUPLED: src/rust/protover/protover.rs `Proto`

View file

@ -482,14 +482,11 @@ memoize_protover_summary(protover_summary_flags_t *out,
protocol_list_supports_protocol(protocols, PRT_PADDING,
PROTOVER_HS_SETUP_PADDING);
/* TODO-324: Set these flags based on real values.
out->supports_ntor3_and_param_negotiation =
protocol_list_supports_protocol(protocols, PRT_RELAY,
XXXX)
&&
out->supports_congestion_control =
protocol_list_supports_protocol(protocols, PRT_FLOWCTRL,
XXXX);
*/
PROTOVER_FLOWCTRL_CC) &&
protocol_list_supports_protocol(protocols, PRT_RELAY,
PROTOVER_RELAY_NTOR_V3);
protover_summary_flags_t *new_cached = tor_memdup(out, sizeof(*out));
cached = strmap_set(protover_summary_map, protocols, new_cached);