mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 22:58:50 +01:00
Protover flag handling for congestion control negotiation
This commit is contained in:
parent
76bdadce12
commit
1b1c261080
4 changed files with 14 additions and 15 deletions
|
@ -732,10 +732,9 @@ typedef struct protover_summary_flags_t {
|
||||||
* negotiate hs circuit setup padding. Requires Padding=2. */
|
* negotiate hs circuit setup padding. Requires Padding=2. */
|
||||||
unsigned int supports_hs_setup_padding : 1;
|
unsigned int supports_hs_setup_padding : 1;
|
||||||
|
|
||||||
/** True iff this router supports ntor3 _and_ supports negotiating
|
/** True iff this router supports congestion control.
|
||||||
* additional circuit parameters via the handshake used in ntor3.
|
* Requires both FlowCtrl=2 *and* Relay=4 */
|
||||||
*/
|
unsigned int supports_congestion_control : 1;
|
||||||
unsigned int supports_ntor3_and_param_negotiation : 1;
|
|
||||||
} protover_summary_flags_t;
|
} protover_summary_flags_t;
|
||||||
|
|
||||||
typedef struct routerinfo_t routerinfo_t;
|
typedef struct routerinfo_t routerinfo_t;
|
||||||
|
|
|
@ -430,13 +430,11 @@ protover_get_supported_protocols(void)
|
||||||
* XXX: WARNING!
|
* 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
|
return
|
||||||
"Cons=1-2 "
|
"Cons=1-2 "
|
||||||
"Desc=1-2 "
|
"Desc=1-2 "
|
||||||
"DirCache=2 "
|
"DirCache=2 "
|
||||||
"FlowCtrl=1 "
|
"FlowCtrl=1-2 "
|
||||||
"HSDir=2 "
|
"HSDir=2 "
|
||||||
"HSIntro=4-5 "
|
"HSIntro=4-5 "
|
||||||
"HSRend=1-2 "
|
"HSRend=1-2 "
|
||||||
|
@ -448,7 +446,7 @@ protover_get_supported_protocols(void)
|
||||||
#endif
|
#endif
|
||||||
"Microdesc=1-2 "
|
"Microdesc=1-2 "
|
||||||
"Padding=2 "
|
"Padding=2 "
|
||||||
"Relay=1-3";
|
"Relay=1-4";
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -35,6 +35,8 @@ struct smartlist_t;
|
||||||
/** The protover version number where relays can consider IPv6 connections
|
/** The protover version number where relays can consider IPv6 connections
|
||||||
* canonical */
|
* canonical */
|
||||||
#define PROTOVER_RELAY_CANONICAL_IPV6 3
|
#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 */
|
/** The protover version number that signifies HSv3 intro point support */
|
||||||
#define PROTOVER_HS_INTRO_V3 4
|
#define PROTOVER_HS_INTRO_V3 4
|
||||||
|
@ -51,6 +53,9 @@ struct smartlist_t;
|
||||||
/** The protover that signals support for HS circuit setup padding machines */
|
/** The protover that signals support for HS circuit setup padding machines */
|
||||||
#define PROTOVER_HS_SETUP_PADDING 2
|
#define PROTOVER_HS_SETUP_PADDING 2
|
||||||
|
|
||||||
|
/** The protover that signals support for congestion control */
|
||||||
|
#define PROTOVER_FLOWCTRL_CC 2
|
||||||
|
|
||||||
/** List of recognized subprotocols. */
|
/** List of recognized subprotocols. */
|
||||||
/// C_RUST_COUPLED: src/rust/protover/ffi.rs `translate_to_rust`
|
/// C_RUST_COUPLED: src/rust/protover/ffi.rs `translate_to_rust`
|
||||||
/// C_RUST_COUPLED: src/rust/protover/protover.rs `Proto`
|
/// C_RUST_COUPLED: src/rust/protover/protover.rs `Proto`
|
||||||
|
|
|
@ -482,14 +482,11 @@ memoize_protover_summary(protover_summary_flags_t *out,
|
||||||
protocol_list_supports_protocol(protocols, PRT_PADDING,
|
protocol_list_supports_protocol(protocols, PRT_PADDING,
|
||||||
PROTOVER_HS_SETUP_PADDING);
|
PROTOVER_HS_SETUP_PADDING);
|
||||||
|
|
||||||
/* TODO-324: Set these flags based on real values.
|
out->supports_congestion_control =
|
||||||
out->supports_ntor3_and_param_negotiation =
|
|
||||||
protocol_list_supports_protocol(protocols, PRT_RELAY,
|
|
||||||
XXXX)
|
|
||||||
&&
|
|
||||||
protocol_list_supports_protocol(protocols, PRT_FLOWCTRL,
|
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));
|
protover_summary_flags_t *new_cached = tor_memdup(out, sizeof(*out));
|
||||||
cached = strmap_set(protover_summary_map, protocols, new_cached);
|
cached = strmap_set(protover_summary_map, protocols, new_cached);
|
||||||
|
|
Loading…
Add table
Reference in a new issue