commit 51f32140b41551bf8f34c9e30a067ddf027401b6 Author: teor teor@riseup.net Date: Mon May 11 12:21:18 2020 +1000
protover: Sort version flags by their underlying protocols
Also fix some comment typos, mainly ">=" when the code says "=".
Part of 33226. --- src/core/or/or.h | 9 +++++---- src/core/or/versions.c | 10 ++++++++-- src/feature/nodelist/nodelist.c | 24 ++++++++++++------------ 3 files changed, 25 insertions(+), 18 deletions(-)
diff --git a/src/core/or/or.h b/src/core/or/or.h index 5b35cbe7f..28211b48c 100644 --- a/src/core/or/or.h +++ b/src/core/or/or.h @@ -830,6 +830,10 @@ typedef struct protover_summary_flags_t { * the v3 protocol detailed in proposal 224. This requires HSIntro=4. */ unsigned int supports_ed25519_hs_intro : 1;
+ /** True iff this router has a protocol list that allows it to support the + * ESTABLISH_INTRO DoS cell extension. Requires HSIntro=5. */ + unsigned int supports_establish_intro_dos_extension : 1; + /** True iff this router has a protocol list that allows it to be an hidden * service directory supporting version 3 as seen in proposal 224. This * requires HSDir=2. */ @@ -841,12 +845,9 @@ typedef struct protover_summary_flags_t { unsigned int supports_v3_rendezvous_point: 1;
/** True iff this router has a protocol list that allows clients to - * negotiate hs circuit setup padding. Requires Padding>=2. */ + * negotiate hs circuit setup padding. Requires Padding=2. */ unsigned int supports_hs_setup_padding : 1;
- /** True iff this router has a protocol list that allows it to support the - * ESTABLISH_INTRO DoS cell extension. Requires HSIntro>=5. */ - unsigned int supports_establish_intro_dos_extension : 1; } protover_summary_flags_t;
typedef struct routerinfo_t routerinfo_t; diff --git a/src/core/or/versions.c b/src/core/or/versions.c index a9a960d66..2a33bf68f 100644 --- a/src/core/or/versions.c +++ b/src/core/or/versions.c @@ -434,25 +434,31 @@ memoize_protover_summary(protover_summary_flags_t *out,
memset(out, 0, sizeof(*out)); out->protocols_known = 1; + out->supports_extend2_cells = protocol_list_supports_protocol(protocols, PRT_RELAY, 2); + out->supports_ed25519_link_handshake_compat = protocol_list_supports_protocol(protocols, PRT_LINKAUTH, 3); out->supports_ed25519_link_handshake_any = protocol_list_supports_protocol_or_later(protocols, PRT_LINKAUTH, 3); + out->supports_ed25519_hs_intro = protocol_list_supports_protocol(protocols, PRT_HSINTRO, 4); + out->supports_establish_intro_dos_extension = + protocol_list_supports_protocol(protocols, PRT_HSINTRO, 5); + out->supports_v3_hsdir = protocol_list_supports_protocol(protocols, PRT_HSDIR, PROTOVER_HSDIR_V3); + out->supports_v3_rendezvous_point = protocol_list_supports_protocol(protocols, PRT_HSREND, PROTOVER_HS_RENDEZVOUS_POINT_V3); + out->supports_hs_setup_padding = protocol_list_supports_protocol(protocols, PRT_PADDING, PROTOVER_HS_SETUP_PADDING); - out->supports_establish_intro_dos_extension = - protocol_list_supports_protocol(protocols, PRT_HSINTRO, 5);
protover_summary_flags_t *new_cached = tor_memdup(out, sizeof(*out)); cached = strmap_set(protover_summary_map, protocols, new_cached); diff --git a/src/feature/nodelist/nodelist.c b/src/feature/nodelist/nodelist.c index 7454f342f..6a8e1723d 100644 --- a/src/feature/nodelist/nodelist.c +++ b/src/feature/nodelist/nodelist.c @@ -1193,18 +1193,7 @@ node_supports_ed25519_hs_intro(const node_t *node) return node_get_protover_summary_flags(node)->supports_ed25519_hs_intro; }
-/** Return true iff <b>node</b> supports the DoS ESTABLISH_INTRO cell - * extenstion. */ -int -node_supports_establish_intro_dos_extension(const node_t *node) -{ - tor_assert(node); - - return node_get_protover_summary_flags(node)-> - supports_establish_intro_dos_extension; -} - -/** Return true iff <b>node</b> supports to be a rendezvous point for hidden +/** Return true iff <b>node</b> can be a rendezvous point for hidden * service version 3 (HSRend=2). */ int node_supports_v3_rendezvous_point(const node_t *node) @@ -1219,6 +1208,17 @@ node_supports_v3_rendezvous_point(const node_t *node) return node_get_protover_summary_flags(node)->supports_v3_rendezvous_point; }
+/** Return true iff <b>node</b> supports the DoS ESTABLISH_INTRO cell + * extenstion. */ +int +node_supports_establish_intro_dos_extension(const node_t *node) +{ + tor_assert(node); + + return node_get_protover_summary_flags(node)-> + supports_establish_intro_dos_extension; +} + /** Return the RSA ID key's SHA1 digest for the provided node. */ const uint8_t * node_get_rsa_id_digest(const node_t *node)
tor-commits@lists.torproject.org