tor-commits
  Threads by month 
                
            - ----- 2025 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
November 2019
- 20 participants
- 2924 discussions
 
                        
                    18 Nov '19
                    
                        commit c9b2fe0460c417278c856db3ee6388f7e3277719
Author: Nick Mathewson <nickm(a)torproject.org>
Date:   Thu Nov 7 08:56:18 2019 -0500
    Changes file for 32415 (struct name uniformity)
---
 changes/ticket32415 | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/changes/ticket32415 b/changes/ticket32415
new file mode 100644
index 000000000..5d732978a
--- /dev/null
+++ b/changes/ticket32415
@@ -0,0 +1,3 @@
+  o Code simplification and refactoring:
+    - Make all the structs we declare follow the same naming convention
+      of ending with "_t".  Closes ticket 32415.
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                     
                        
                    
                        
                            
                                
                            
                            [tor/master] Rename probability distribution names to end with "_t".
                        
                        
by teor@torproject.org 18 Nov '19
                    by teor@torproject.org 18 Nov '19
18 Nov '19
                    
                        commit 31a6a6512fa1a85ef5ea5cb37f0a7aec080d5848
Author: Nick Mathewson <nickm(a)torproject.org>
Date:   Thu Nov 7 08:55:23 2019 -0500
    Rename probability distribution names to end with "_t".
    
    I needed to do this by hand, since we also use these for function
    names, variable names, macro expansion, and a little token pasting.
---
 src/core/or/circuitpadding.c |  12 ++--
 src/lib/math/prob_distr.c    | 140 ++++++++++++++++++++++---------------------
 src/lib/math/prob_distr.h    |  68 ++++++++++-----------
 src/test/test_prob_distr.c   |  30 +++++-----
 4 files changed, 127 insertions(+), 123 deletions(-)
diff --git a/src/core/or/circuitpadding.c b/src/core/or/circuitpadding.c
index e9b14144c..3853e9fdc 100644
--- a/src/core/or/circuitpadding.c
+++ b/src/core/or/circuitpadding.c
@@ -688,7 +688,7 @@ circpad_distribution_sample(circpad_distribution_t dist)
     case CIRCPAD_DIST_UNIFORM:
       {
         // param2 is upper bound, param1 is lower
-        const struct uniform my_uniform = {
+        const struct uniform_t my_uniform = {
           .base = UNIFORM(my_uniform),
           .a = dist.param1,
           .b = dist.param2,
@@ -698,7 +698,7 @@ circpad_distribution_sample(circpad_distribution_t dist)
     case CIRCPAD_DIST_LOGISTIC:
       {
       /* param1 is Mu, param2 is sigma. */
-        const struct logistic my_logistic = {
+        const struct logistic_t my_logistic = {
           .base = LOGISTIC(my_logistic),
           .mu = dist.param1,
           .sigma = dist.param2,
@@ -708,7 +708,7 @@ circpad_distribution_sample(circpad_distribution_t dist)
     case CIRCPAD_DIST_LOG_LOGISTIC:
       {
         /* param1 is Alpha, param2 is 1.0/Beta */
-        const struct log_logistic my_log_logistic = {
+        const struct log_logistic_t my_log_logistic = {
           .base = LOG_LOGISTIC(my_log_logistic),
           .alpha = dist.param1,
           .beta = dist.param2,
@@ -718,7 +718,7 @@ circpad_distribution_sample(circpad_distribution_t dist)
     case CIRCPAD_DIST_GEOMETRIC:
       {
         /* param1 is 'p' (success probability) */
-        const struct geometric my_geometric = {
+        const struct geometric_t my_geometric = {
           .base = GEOMETRIC(my_geometric),
           .p = dist.param1,
         };
@@ -727,7 +727,7 @@ circpad_distribution_sample(circpad_distribution_t dist)
     case CIRCPAD_DIST_WEIBULL:
       {
         /* param1 is k, param2 is Lambda */
-        const struct weibull my_weibull = {
+        const struct weibull_t my_weibull = {
           .base = WEIBULL(my_weibull),
           .k = dist.param1,
           .lambda = dist.param2,
@@ -737,7 +737,7 @@ circpad_distribution_sample(circpad_distribution_t dist)
     case CIRCPAD_DIST_PARETO:
       {
         /* param1 is sigma, param2 is xi, no more params for mu so we use 0 */
-        const struct genpareto my_genpareto = {
+        const struct genpareto_t my_genpareto = {
           .base = GENPARETO(my_genpareto),
           .mu = 0,
           .sigma = dist.param1,
diff --git a/src/lib/math/prob_distr.c b/src/lib/math/prob_distr.c
index 757cd9bdd..1d1748666 100644
--- a/src/lib/math/prob_distr.c
+++ b/src/lib/math/prob_distr.c
@@ -52,14 +52,15 @@
 #include <math.h>
 #include <stddef.h>
 
+#ifndef COCCI
 /** Declare a function that downcasts from a generic dist struct to the actual
  *  subtype probablity distribution it represents. */
 #define DECLARE_PROB_DISTR_DOWNCAST_FN(name) \
   static inline                           \
-  const struct name *                             \
-  dist_to_const_##name(const struct dist *obj) {    \
+  const struct name##_t *                             \
+  dist_to_const_##name(const struct dist_t *obj) {    \
     tor_assert(obj->ops == &name##_ops);            \
-    return SUBTYPE_P(obj, struct name, base);   \
+    return SUBTYPE_P(obj, struct name ## _t, base);   \
   }
 DECLARE_PROB_DISTR_DOWNCAST_FN(uniform)
 DECLARE_PROB_DISTR_DOWNCAST_FN(geometric)
@@ -67,6 +68,7 @@ DECLARE_PROB_DISTR_DOWNCAST_FN(logistic)
 DECLARE_PROB_DISTR_DOWNCAST_FN(log_logistic)
 DECLARE_PROB_DISTR_DOWNCAST_FN(genpareto)
 DECLARE_PROB_DISTR_DOWNCAST_FN(weibull)
+#endif
 
 /**
  * Count number of one bits in 32-bit word.
@@ -1324,42 +1326,42 @@ sample_geometric(uint32_t s, double p0, double p)
 
 /** Returns the name of the distribution in <b>dist</b>. */
 const char *
-dist_name(const struct dist *dist)
+dist_name(const struct dist_t *dist)
 {
   return dist->ops->name;
 }
 
 /* Sample a value from <b>dist</b> and return it. */
 double
-dist_sample(const struct dist *dist)
+dist_sample(const struct dist_t *dist)
 {
   return dist->ops->sample(dist);
 }
 
 /** Compute the CDF of <b>dist</b> at <b>x</b>. */
 double
-dist_cdf(const struct dist *dist, double x)
+dist_cdf(const struct dist_t *dist, double x)
 {
   return dist->ops->cdf(dist, x);
 }
 
 /** Compute the SF (Survival function) of <b>dist</b> at <b>x</b>. */
 double
-dist_sf(const struct dist *dist, double x)
+dist_sf(const struct dist_t *dist, double x)
 {
   return dist->ops->sf(dist, x);
 }
 
 /** Compute the iCDF (Inverse CDF) of <b>dist</b> at <b>x</b>. */
 double
-dist_icdf(const struct dist *dist, double p)
+dist_icdf(const struct dist_t *dist, double p)
 {
   return dist->ops->icdf(dist, p);
 }
 
 /** Compute the iSF (Inverse Survival function) of <b>dist</b> at <b>x</b>. */
 double
-dist_isf(const struct dist *dist, double p)
+dist_isf(const struct dist_t *dist, double p)
 {
   return dist->ops->isf(dist, p);
 }
@@ -1367,18 +1369,18 @@ dist_isf(const struct dist *dist, double p)
 /** Functions for uniform distribution */
 
 static double
-uniform_sample(const struct dist *dist)
+uniform_sample(const struct dist_t *dist)
 {
-  const struct uniform *U = dist_to_const_uniform(dist);
+  const struct uniform_t *U = dist_to_const_uniform(dist);
   double p0 = random_uniform_01();
 
   return sample_uniform_interval(p0, U->a, U->b);
 }
 
 static double
-uniform_cdf(const struct dist *dist, double x)
+uniform_cdf(const struct dist_t *dist, double x)
 {
-  const struct uniform *U = dist_to_const_uniform(dist);
+  const struct uniform_t *U = dist_to_const_uniform(dist);
   if (x < U->a)
     return 0;
   else if (x < U->b)
@@ -1388,9 +1390,9 @@ uniform_cdf(const struct dist *dist, double x)
 }
 
 static double
-uniform_sf(const struct dist *dist, double x)
+uniform_sf(const struct dist_t *dist, double x)
 {
-  const struct uniform *U = dist_to_const_uniform(dist);
+  const struct uniform_t *U = dist_to_const_uniform(dist);
 
   if (x > U->b)
     return 0;
@@ -1401,18 +1403,18 @@ uniform_sf(const struct dist *dist, double x)
 }
 
 static double
-uniform_icdf(const struct dist *dist, double p)
+uniform_icdf(const struct dist_t *dist, double p)
 {
-  const struct uniform *U = dist_to_const_uniform(dist);
+  const struct uniform_t *U = dist_to_const_uniform(dist);
   double w = U->b - U->a;
 
   return (p < 0.5 ? (U->a + w*p) : (U->b - w*(1 - p)));
 }
 
 static double
-uniform_isf(const struct dist *dist, double p)
+uniform_isf(const struct dist_t *dist, double p)
 {
-  const struct uniform *U = dist_to_const_uniform(dist);
+  const struct uniform_t *U = dist_to_const_uniform(dist);
   double w = U->b - U->a;
 
   return (p < 0.5 ? (U->b - w*p) : (U->a + w*(1 - p)));
@@ -1434,9 +1436,9 @@ const struct dist_ops_t uniform_ops = {
 /** Functions for logistic distribution: */
 
 static double
-logistic_sample(const struct dist *dist)
+logistic_sample(const struct dist_t *dist)
 {
-  const struct logistic *L = dist_to_const_logistic(dist);
+  const struct logistic_t *L = dist_to_const_logistic(dist);
   uint32_t s = crypto_fast_rng_get_u32(get_thread_fast_rng());
   double t = random_uniform_01();
   double p0 = random_uniform_01();
@@ -1445,30 +1447,30 @@ logistic_sample(const struct dist *dist)
 }
 
 static double
-logistic_cdf(const struct dist *dist, double x)
+logistic_cdf(const struct dist_t *dist, double x)
 {
-  const struct logistic *L = dist_to_const_logistic(dist);
+  const struct logistic_t *L = dist_to_const_logistic(dist);
   return cdf_logistic(x, L->mu, L->sigma);
 }
 
 static double
-logistic_sf(const struct dist *dist, double x)
+logistic_sf(const struct dist_t *dist, double x)
 {
-  const struct logistic *L = dist_to_const_logistic(dist);
+  const struct logistic_t *L = dist_to_const_logistic(dist);
   return sf_logistic(x, L->mu, L->sigma);
 }
 
 static double
-logistic_icdf(const struct dist *dist, double p)
+logistic_icdf(const struct dist_t *dist, double p)
 {
-  const struct logistic *L = dist_to_const_logistic(dist);
+  const struct logistic_t *L = dist_to_const_logistic(dist);
   return icdf_logistic(p, L->mu, L->sigma);
 }
 
 static double
-logistic_isf(const struct dist *dist, double p)
+logistic_isf(const struct dist_t *dist, double p)
 {
-  const struct logistic *L = dist_to_const_logistic(dist);
+  const struct logistic_t *L = dist_to_const_logistic(dist);
   return isf_logistic(p, L->mu, L->sigma);
 }
 
@@ -1484,9 +1486,9 @@ const struct dist_ops_t logistic_ops = {
 /** Functions for log-logistic distribution: */
 
 static double
-log_logistic_sample(const struct dist *dist)
+log_logistic_sample(const struct dist_t *dist)
 {
-  const struct log_logistic *LL = dist_to_const_log_logistic(dist);
+  const struct log_logistic_t *LL = dist_to_const_log_logistic(dist);
   uint32_t s = crypto_fast_rng_get_u32(get_thread_fast_rng());
   double p0 = random_uniform_01();
 
@@ -1494,30 +1496,30 @@ log_logistic_sample(const struct dist *dist)
 }
 
 static double
-log_logistic_cdf(const struct dist *dist, double x)
+log_logistic_cdf(const struct dist_t *dist, double x)
 {
-  const struct log_logistic *LL = dist_to_const_log_logistic(dist);
+  const struct log_logistic_t *LL = dist_to_const_log_logistic(dist);
   return cdf_log_logistic(x, LL->alpha, LL->beta);
 }
 
 static double
-log_logistic_sf(const struct dist *dist, double x)
+log_logistic_sf(const struct dist_t *dist, double x)
 {
-  const struct log_logistic *LL = dist_to_const_log_logistic(dist);
+  const struct log_logistic_t *LL = dist_to_const_log_logistic(dist);
   return sf_log_logistic(x, LL->alpha, LL->beta);
 }
 
 static double
-log_logistic_icdf(const struct dist *dist, double p)
+log_logistic_icdf(const struct dist_t *dist, double p)
 {
-  const struct log_logistic *LL = dist_to_const_log_logistic(dist);
+  const struct log_logistic_t *LL = dist_to_const_log_logistic(dist);
   return icdf_log_logistic(p, LL->alpha, LL->beta);
 }
 
 static double
-log_logistic_isf(const struct dist *dist, double p)
+log_logistic_isf(const struct dist_t *dist, double p)
 {
-  const struct log_logistic *LL = dist_to_const_log_logistic(dist);
+  const struct log_logistic_t *LL = dist_to_const_log_logistic(dist);
   return isf_log_logistic(p, LL->alpha, LL->beta);
 }
 
@@ -1533,9 +1535,9 @@ const struct dist_ops_t log_logistic_ops = {
 /** Functions for Weibull distribution */
 
 static double
-weibull_sample(const struct dist *dist)
+weibull_sample(const struct dist_t *dist)
 {
-  const struct weibull *W = dist_to_const_weibull(dist);
+  const struct weibull_t *W = dist_to_const_weibull(dist);
   uint32_t s = crypto_fast_rng_get_u32(get_thread_fast_rng());
   double p0 = random_uniform_01();
 
@@ -1543,30 +1545,30 @@ weibull_sample(const struct dist *dist)
 }
 
 static double
-weibull_cdf(const struct dist *dist, double x)
+weibull_cdf(const struct dist_t *dist, double x)
 {
-  const struct weibull *W = dist_to_const_weibull(dist);
+  const struct weibull_t *W = dist_to_const_weibull(dist);
   return cdf_weibull(x, W->lambda, W->k);
 }
 
 static double
-weibull_sf(const struct dist *dist, double x)
+weibull_sf(const struct dist_t *dist, double x)
 {
-  const struct weibull *W = dist_to_const_weibull(dist);
+  const struct weibull_t *W = dist_to_const_weibull(dist);
   return sf_weibull(x, W->lambda, W->k);
 }
 
 static double
-weibull_icdf(const struct dist *dist, double p)
+weibull_icdf(const struct dist_t *dist, double p)
 {
-  const struct weibull *W = dist_to_const_weibull(dist);
+  const struct weibull_t *W = dist_to_const_weibull(dist);
   return icdf_weibull(p, W->lambda, W->k);
 }
 
 static double
-weibull_isf(const struct dist *dist, double p)
+weibull_isf(const struct dist_t *dist, double p)
 {
-  const struct weibull *W = dist_to_const_weibull(dist);
+  const struct weibull_t *W = dist_to_const_weibull(dist);
   return isf_weibull(p, W->lambda, W->k);
 }
 
@@ -1582,9 +1584,9 @@ const struct dist_ops_t weibull_ops = {
 /** Functions for generalized Pareto distributions */
 
 static double
-genpareto_sample(const struct dist *dist)
+genpareto_sample(const struct dist_t *dist)
 {
-  const struct genpareto *GP = dist_to_const_genpareto(dist);
+  const struct genpareto_t *GP = dist_to_const_genpareto(dist);
   uint32_t s = crypto_fast_rng_get_u32(get_thread_fast_rng());
   double p0 = random_uniform_01();
 
@@ -1592,30 +1594,30 @@ genpareto_sample(const struct dist *dist)
 }
 
 static double
-genpareto_cdf(const struct dist *dist, double x)
+genpareto_cdf(const struct dist_t *dist, double x)
 {
-  const struct genpareto *GP = dist_to_const_genpareto(dist);
+  const struct genpareto_t *GP = dist_to_const_genpareto(dist);
   return cdf_genpareto(x, GP->mu, GP->sigma, GP->xi);
 }
 
 static double
-genpareto_sf(const struct dist *dist, double x)
+genpareto_sf(const struct dist_t *dist, double x)
 {
-  const struct genpareto *GP = dist_to_const_genpareto(dist);
+  const struct genpareto_t *GP = dist_to_const_genpareto(dist);
   return sf_genpareto(x, GP->mu, GP->sigma, GP->xi);
 }
 
 static double
-genpareto_icdf(const struct dist *dist, double p)
+genpareto_icdf(const struct dist_t *dist, double p)
 {
-  const struct genpareto *GP = dist_to_const_genpareto(dist);
+  const struct genpareto_t *GP = dist_to_const_genpareto(dist);
   return icdf_genpareto(p, GP->mu, GP->sigma, GP->xi);
 }
 
 static double
-genpareto_isf(const struct dist *dist, double p)
+genpareto_isf(const struct dist_t *dist, double p)
 {
-  const struct genpareto *GP = dist_to_const_genpareto(dist);
+  const struct genpareto_t *GP = dist_to_const_genpareto(dist);
   return isf_genpareto(p, GP->mu, GP->sigma, GP->xi);
 }
 
@@ -1631,9 +1633,9 @@ const struct dist_ops_t genpareto_ops = {
 /** Functions for geometric distribution on number of trials before success */
 
 static double
-geometric_sample(const struct dist *dist)
+geometric_sample(const struct dist_t *dist)
 {
-  const struct geometric *G = dist_to_const_geometric(dist);
+  const struct geometric_t *G = dist_to_const_geometric(dist);
   uint32_t s = crypto_fast_rng_get_u32(get_thread_fast_rng());
   double p0 = random_uniform_01();
 
@@ -1641,9 +1643,9 @@ geometric_sample(const struct dist *dist)
 }
 
 static double
-geometric_cdf(const struct dist *dist, double x)
+geometric_cdf(const struct dist_t *dist, double x)
 {
-  const struct geometric *G = dist_to_const_geometric(dist);
+  const struct geometric_t *G = dist_to_const_geometric(dist);
 
   if (x < 1)
     return 0;
@@ -1652,9 +1654,9 @@ geometric_cdf(const struct dist *dist, double x)
 }
 
 static double
-geometric_sf(const struct dist *dist, double x)
+geometric_sf(const struct dist_t *dist, double x)
 {
-  const struct geometric *G = dist_to_const_geometric(dist);
+  const struct geometric_t *G = dist_to_const_geometric(dist);
 
   if (x < 1)
     return 0;
@@ -1663,17 +1665,17 @@ geometric_sf(const struct dist *dist, double x)
 }
 
 static double
-geometric_icdf(const struct dist *dist, double p)
+geometric_icdf(const struct dist_t *dist, double p)
 {
-  const struct geometric *G = dist_to_const_geometric(dist);
+  const struct geometric_t *G = dist_to_const_geometric(dist);
 
   return log1p(-p)/log1p(-G->p);
 }
 
 static double
-geometric_isf(const struct dist *dist, double p)
+geometric_isf(const struct dist_t *dist, double p)
 {
-  const struct geometric *G = dist_to_const_geometric(dist);
+  const struct geometric_t *G = dist_to_const_geometric(dist);
 
   return log(p)/log1p(-G->p);
 }
diff --git a/src/lib/math/prob_distr.h b/src/lib/math/prob_distr.h
index f47bf09c5..4498b0a8b 100644
--- a/src/lib/math/prob_distr.h
+++ b/src/lib/math/prob_distr.h
@@ -15,12 +15,12 @@
 /**
  * Container for distribution parameters for sampling, CDF, &c.
  */
-struct dist {
+struct dist_t {
   const struct dist_ops_t *ops;
 };
 
 /**
- * Untyped initializer element for struct dist using the specified
+ * Untyped initializer element for struct dist_t using the specified
  * struct dist_ops_t pointer.  Don't actually use this directly -- use
  * the type-specific macro built out of DIST_BASE_TYPED below -- but if
  * you did use this directly, it would be something like:
@@ -61,13 +61,13 @@ struct dist {
 #endif /* defined(__COVERITY__) */
 
 /**
-* Typed initializer element for struct dist using the specified struct
+* Typed initializer element for struct dist_t using the specified struct
 * dist_ops_t pointer.  Don't actually use this directly -- use a
 * type-specific macro built out of it -- but if you did use this
 * directly, it would be something like:
 *
 *     struct weibull mydist = {
-*       DIST_BASE_TYPED(&weibull_ops, mydist, struct weibull),
+*       DIST_BASE_TYPED(&weibull_ops, mydist, struct weibull_t),
 *       .lambda = ...,
 *       .k = ...,
 *     };
@@ -76,7 +76,7 @@ struct dist {
 * operations and define a type-specific initializer element like so:
 *
 *     struct foo {
-*       struct dist base;
+*       struct dist_t base;
 *       int omega;
 *       double tau;
 *       double phi;
@@ -113,12 +113,12 @@ struct dist {
  * corresponding dist_ops_t function.  In the parlance of C++, these call
  * virtual member functions.
  */
-const char *dist_name(const struct dist *);
-double dist_sample(const struct dist *);
-double dist_cdf(const struct dist *, double x);
-double dist_sf(const struct dist *, double x);
-double dist_icdf(const struct dist *, double p);
-double dist_isf(const struct dist *, double p);
+const char *dist_name(const struct dist_t *);
+double dist_sample(const struct dist_t *);
+double dist_cdf(const struct dist_t *, double x);
+double dist_sf(const struct dist_t *, double x);
+double dist_icdf(const struct dist_t *, double p);
+double dist_isf(const struct dist_t *, double p);
 
 /**
  * Set of operations on a potentially parametric family of
@@ -127,29 +127,29 @@ double dist_isf(const struct dist *, double p);
  */
 struct dist_ops_t {
   const char *name;
-  double (*sample)(const struct dist *);
-  double (*cdf)(const struct dist *, double x);
-  double (*sf)(const struct dist *, double x);
-  double (*icdf)(const struct dist *, double p);
-  double (*isf)(const struct dist *, double p);
+  double (*sample)(const struct dist_t *);
+  double (*cdf)(const struct dist_t *, double x);
+  double (*sf)(const struct dist_t *, double x);
+  double (*icdf)(const struct dist_t *, double p);
+  double (*isf)(const struct dist_t *, double p);
 };
 
 /* Geometric distribution on positive number of trials before first success */
 
-struct geometric {
-  struct dist base;
+struct geometric_t {
+  struct dist_t base;
   double p; /* success probability */
 };
 
 extern const struct dist_ops_t geometric_ops;
 
 #define GEOMETRIC(OBJ)                                      \
-  DIST_BASE_TYPED(&geometric_ops, OBJ, struct geometric)
+  DIST_BASE_TYPED(&geometric_ops, OBJ, struct geometric_t)
 
 /* Pareto distribution */
 
-struct genpareto {
-  struct dist base;
+struct genpareto_t {
+  struct dist_t base;
   double mu;
   double sigma;
   double xi;
@@ -158,12 +158,12 @@ struct genpareto {
 extern const struct dist_ops_t genpareto_ops;
 
 #define GENPARETO(OBJ)                                      \
-  DIST_BASE_TYPED(&genpareto_ops, OBJ, struct genpareto)
+  DIST_BASE_TYPED(&genpareto_ops, OBJ, struct genpareto_t)
 
 /* Weibull distribution */
 
-struct weibull {
-  struct dist base;
+struct weibull_t {
+  struct dist_t base;
   double lambda;
   double k;
 };
@@ -171,12 +171,12 @@ struct weibull {
 extern const struct dist_ops_t weibull_ops;
 
 #define WEIBULL(OBJ)                                    \
-  DIST_BASE_TYPED(&weibull_ops, OBJ, struct weibull)
+  DIST_BASE_TYPED(&weibull_ops, OBJ, struct weibull_t)
 
 /* Log-logistic distribution */
 
-struct log_logistic {
-  struct dist base;
+struct log_logistic_t {
+  struct dist_t base;
   double alpha;
   double beta;
 };
@@ -184,12 +184,12 @@ struct log_logistic {
 extern const struct dist_ops_t log_logistic_ops;
 
 #define LOG_LOGISTIC(OBJ)                                       \
-  DIST_BASE_TYPED(&log_logistic_ops, OBJ, struct log_logistic)
+  DIST_BASE_TYPED(&log_logistic_ops, OBJ, struct log_logistic_t)
 
 /* Logistic distribution */
 
-struct logistic {
-  struct dist base;
+struct logistic_t {
+  struct dist_t base;
   double mu;
   double sigma;
 };
@@ -197,12 +197,12 @@ struct logistic {
 extern const struct dist_ops_t logistic_ops;
 
 #define LOGISTIC(OBJ)                                   \
-  DIST_BASE_TYPED(&logistic_ops, OBJ, struct logistic)
+  DIST_BASE_TYPED(&logistic_ops, OBJ, struct logistic_t)
 
 /* Uniform distribution */
 
-struct uniform {
-  struct dist base;
+struct uniform_t {
+  struct dist_t base;
   double a;
   double b;
 };
@@ -210,7 +210,7 @@ struct uniform {
 extern const struct dist_ops_t uniform_ops;
 
 #define UNIFORM(OBJ)                                    \
-  DIST_BASE_TYPED(&uniform_ops, OBJ, struct uniform)
+  DIST_BASE_TYPED(&uniform_ops, OBJ, struct uniform_t)
 
 /** Only by unittests */
 
diff --git a/src/test/test_prob_distr.c b/src/test/test_prob_distr.c
index 0ecbf65f4..e2a51b49f 100644
--- a/src/test/test_prob_distr.c
+++ b/src/test/test_prob_distr.c
@@ -946,7 +946,7 @@ psi_test(const size_t C[PSI_DF], const double logP[PSI_DF], size_t N)
 static bool
 test_stochastic_geometric_impl(double p)
 {
-  const struct geometric geometric = {
+  const struct geometric_t geometric = {
     .base = GEOMETRIC(geometric),
     .p = p,
   };
@@ -1012,7 +1012,8 @@ test_stochastic_geometric_impl(double p)
  * +inf, and x_i = i*(hi - lo)/(n - 2).
  */
 static void
-bin_cdfs(const struct dist *dist, double lo, double hi, double *logP, size_t n)
+bin_cdfs(const struct dist_t *dist, double lo, double hi, double *logP,
+         size_t n)
 {
 #define CDF(x)  dist_cdf(dist, x)
 #define SF(x)   dist_sf(dist, x)
@@ -1059,7 +1060,8 @@ bin_cdfs(const struct dist *dist, double lo, double hi, double *logP, size_t n)
  * +inf, and x_i = i*(hi - lo)/(n - 2).
  */
 static void
-bin_samples(const struct dist *dist, double lo, double hi, size_t *C, size_t n)
+bin_samples(const struct dist_t *dist, double lo, double hi, size_t *C,
+            size_t n)
 {
   const double w = (hi - lo)/(n - 2);
   size_t i;
@@ -1088,7 +1090,7 @@ bin_samples(const struct dist *dist, double lo, double hi, size_t *C, size_t n)
  * 0.01^2 = 0.0001.
  */
 static bool
-test_psi_dist_sample(const struct dist *dist)
+test_psi_dist_sample(const struct dist_t *dist)
 {
   double logP[PSI_DF] = {0};
   unsigned ntry = NTRIALS, npass = 0;
@@ -1134,32 +1136,32 @@ test_stochastic_uniform(void *arg)
 {
   (void) arg;
 
-  const struct uniform uniform01 = {
+  const struct uniform_t uniform01 = {
     .base = UNIFORM(uniform01),
     .a = 0,
     .b = 1,
   };
-  const struct uniform uniform_pos = {
+  const struct uniform_t uniform_pos = {
     .base = UNIFORM(uniform_pos),
     .a = 1.23,
     .b = 4.56,
   };
-  const struct uniform uniform_neg = {
+  const struct uniform_t uniform_neg = {
     .base = UNIFORM(uniform_neg),
     .a = -10,
     .b = -1,
   };
-  const struct uniform uniform_cross = {
+  const struct uniform_t uniform_cross = {
     .base = UNIFORM(uniform_cross),
     .a = -1.23,
     .b = 4.56,
   };
-  const struct uniform uniform_subnormal = {
+  const struct uniform_t uniform_subnormal = {
     .base = UNIFORM(uniform_subnormal),
     .a = 4e-324,
     .b = 4e-310,
   };
-  const struct uniform uniform_subnormal_cross = {
+  const struct uniform_t uniform_subnormal_cross = {
     .base = UNIFORM(uniform_subnormal_cross),
     .a = -4e-324,
     .b = 4e-310,
@@ -1189,7 +1191,7 @@ test_stochastic_uniform(void *arg)
 static bool
 test_stochastic_logistic_impl(double mu, double sigma)
 {
-  const struct logistic dist = {
+  const struct logistic_t dist = {
     .base = LOGISTIC(dist),
     .mu = mu,
     .sigma = sigma,
@@ -1202,7 +1204,7 @@ test_stochastic_logistic_impl(double mu, double sigma)
 static bool
 test_stochastic_log_logistic_impl(double alpha, double beta)
 {
-  const struct log_logistic dist = {
+  const struct log_logistic_t dist = {
     .base = LOG_LOGISTIC(dist),
     .alpha = alpha,
     .beta = beta,
@@ -1215,7 +1217,7 @@ test_stochastic_log_logistic_impl(double alpha, double beta)
 static bool
 test_stochastic_weibull_impl(double lambda, double k)
 {
-  const struct weibull dist = {
+  const struct weibull_t dist = {
     .base = WEIBULL(dist),
     .lambda = lambda,
     .k = k,
@@ -1235,7 +1237,7 @@ test_stochastic_weibull_impl(double lambda, double k)
 static bool
 test_stochastic_genpareto_impl(double mu, double sigma, double xi)
 {
-  const struct genpareto dist = {
+  const struct genpareto_t dist = {
     .base = GENPARETO(dist),
     .mu = mu,
     .sigma = sigma,
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                    
                    
                        commit 4845ab53f06c2886bd619f5e35a07d18b879f5ff
Author: Nick Mathewson <nickm(a)torproject.org>
Date:   Thu Nov 7 08:41:22 2019 -0500
    Make all our struct names end with "_t".
    
    This is an automated commit, generated by this command:
    
    ./scripts/maint/rename_c_identifier.py \
            address_ttl_s address_ttl_t \
            aes_cnt_cipher aes_cnt_cipher_t \
            authchallenge_data_s authchallenge_data_t \
            authenticate_data_s authenticate_data_t \
            cached_bw_event_s cached_bw_event_t \
            cbuf cbuf_t \
            cell_ewma_s cell_ewma_t \
            certs_data_s certs_data_t \
            channel_idmap_entry_s channel_idmap_entry_t \
            channel_listener_s channel_listener_t \
            channel_s channel_t \
            channel_tls_s channel_tls_t \
            circuit_build_times_s circuit_build_times_t \
            circuit_muxinfo_s circuit_muxinfo_t \
            circuitmux_policy_circ_data_s circuitmux_policy_circ_data_t \
            circuitmux_policy_data_s circuitmux_policy_data_t \
            circuitmux_policy_s circuitmux_policy_t \
            circuitmux_s circuitmux_t \
            coord coord_t \
            cpuworker_job_u cpuworker_job_u_t \
            cv_testinfo_s cv_testinfo_t \
            ddmap_entry_s ddmap_entry_t \
            dircollator_s dircollator_t \
            dist_ops dist_ops_t \
            ecdh_work_s ecdh_work_t \
            ewma_policy_circ_data_s ewma_policy_circ_data_t \
            ewma_policy_data_s ewma_policy_data_t \
            fp_pair_map_entry_s fp_pair_map_entry_t \
            fp_pair_map_s fp_pair_map_t \
            guard_selection_s guard_selection_t \
            mbw_cache_entry_s mbw_cache_entry_t \
            outbuf_table_ent_s outbuf_table_ent_t \
            queued_event_s queued_event_t \
            replyqueue_s replyqueue_t \
            rsa_work_s rsa_work_t \
            sandbox_cfg_elem sandbox_cfg_elem_t \
            scheduler_s scheduler_t \
            smp_param smp_param_t \
            socket_table_ent_s socket_table_ent_t \
            state_s state_t \
            threadpool_s threadpool_t \
            timeout_cb timeout_cb_t \
            tor_libevent_cfg tor_libevent_cfg_t \
            tor_threadlocal_s tor_threadlocal_t \
            url_table_ent_s url_table_ent_t \
            worker_state_s worker_state_t \
            workerthread_s workerthread_t \
            workqueue_entry_s workqueue_entry_t
---
 src/app/config/config.c              |  2 +-
 src/core/mainloop/cpuworker.c        |  4 ++--
 src/core/mainloop/cpuworker.h        |  4 ++--
 src/core/or/channel.c                | 20 ++++++++++----------
 src/core/or/channel.h                | 12 ++++++------
 src/core/or/channeltls.h             |  2 +-
 src/core/or/circuitmux.c             |  4 ++--
 src/core/or/circuitmux.h             | 14 +++++++-------
 src/core/or/circuitmux_ewma.h        | 12 ++++++------
 src/core/or/circuitstats.h           |  2 +-
 src/core/or/or.h                     | 16 ++++++++--------
 src/core/or/or_circuit_st.h          |  2 +-
 src/core/or/relay.h                  |  2 +-
 src/core/or/relay_crypto_st.h        |  2 +-
 src/core/or/scheduler.h              |  8 ++++----
 src/core/or/scheduler_kist.c         | 14 +++++++-------
 src/ext/timeouts/timeout.h           |  6 +++---
 src/feature/client/entrynodes.h      |  4 ++--
 src/feature/control/control_events.c |  6 +++---
 src/feature/dirauth/bwauth.c         |  2 +-
 src/feature/dirauth/dircollate.c     |  8 ++++----
 src/feature/dirauth/dircollate.h     |  8 ++++----
 src/feature/dircache/conscache.c     |  2 +-
 src/feature/dircache/conscache.h     |  4 ++--
 src/feature/dircache/consdiffmgr.c   |  2 +-
 src/feature/dircache/consdiffmgr.h   |  4 ++--
 src/feature/dircache/dircache.c      |  2 +-
 src/feature/dircommon/fp_pair.c      | 12 ++++++------
 src/feature/dircommon/fp_pair.h      |  4 ++--
 src/lib/crypt_ops/aes.h              |  2 +-
 src/lib/crypt_ops/aes_openssl.c      |  2 +-
 src/lib/crypt_ops/crypto_cipher.h    |  2 +-
 src/lib/crypt_ops/crypto_ope.h       |  6 +++---
 src/lib/crypt_ops/crypto_rand_fast.c | 10 +++++-----
 src/lib/evloop/compat_libevent.c     |  2 +-
 src/lib/evloop/compat_libevent.h     |  6 +++---
 src/lib/evloop/timers.c              |  4 ++--
 src/lib/evloop/workqueue.c           | 20 ++++++++++----------
 src/lib/evloop/workqueue.h           |  6 +++---
 src/lib/fs/storagedir.h              |  4 ++--
 src/lib/math/prob_distr.c            | 12 ++++++------
 src/lib/math/prob_distr.h            | 24 ++++++++++++------------
 src/lib/sandbox/sandbox.h            | 10 +++++-----
 src/lib/thread/threads.h             |  2 +-
 src/test/test-timers.c               |  2 +-
 src/test/test_consdiffmgr.c          |  4 ++--
 src/test/test_dispatch.c             |  6 +++---
 src/test/test_link_handshake.c       |  6 +++---
 src/test/test_threads.c              |  2 +-
 src/test/test_workqueue.c            |  8 ++++----
 src/test/testing_common.c            |  2 +-
 51 files changed, 163 insertions(+), 163 deletions(-)
diff --git a/src/app/config/config.c b/src/app/config/config.c
index 5f9a55ed1..7ce07c66b 100644
--- a/src/app/config/config.c
+++ b/src/app/config/config.c
@@ -6770,7 +6770,7 @@ get_num_cpus(const or_options_t *options)
 static void
 init_libevent(const or_options_t *options)
 {
-  tor_libevent_cfg cfg;
+  tor_libevent_cfg_t cfg;
 
   tor_assert(options);
 
diff --git a/src/core/mainloop/cpuworker.c b/src/core/mainloop/cpuworker.c
index 436fcd28c..de8fc1f34 100644
--- a/src/core/mainloop/cpuworker.c
+++ b/src/core/mainloop/cpuworker.c
@@ -37,7 +37,7 @@
 
 static void queue_pending_tasks(void);
 
-typedef struct worker_state_s {
+typedef struct worker_state_t {
   int generation;
   server_onion_keys_t *onion_keys;
 } worker_state_t;
@@ -160,7 +160,7 @@ typedef struct cpuworker_reply_t {
   uint8_t rend_auth_material[DIGEST_LEN];
 } cpuworker_reply_t;
 
-typedef struct cpuworker_job_u {
+typedef struct cpuworker_job_u_t {
   or_circuit_t *circ;
   union {
     cpuworker_request_t request;
diff --git a/src/core/mainloop/cpuworker.h b/src/core/mainloop/cpuworker.h
index 77e2c4250..8511f4f85 100644
--- a/src/core/mainloop/cpuworker.h
+++ b/src/core/mainloop/cpuworker.h
@@ -14,10 +14,10 @@
 
 void cpu_init(void);
 void cpuworkers_rotate_keyinfo(void);
-struct workqueue_entry_s;
+struct workqueue_entry_t;
 enum workqueue_reply_t;
 enum workqueue_priority_t;
-MOCK_DECL(struct workqueue_entry_s *, cpuworker_queue_work, (
+MOCK_DECL(struct workqueue_entry_t *, cpuworker_queue_work, (
                     enum workqueue_priority_t priority,
                     enum workqueue_reply_t (*fn)(void *, void *),
                     void (*reply_fn)(void *),
diff --git a/src/core/or/channel.c b/src/core/or/channel.c
index 0e190809b..31a33325f 100644
--- a/src/core/or/channel.c
+++ b/src/core/or/channel.c
@@ -106,7 +106,7 @@ static smartlist_t *finished_listeners = NULL;
 
 /** Map from channel->global_identifier to channel.  Contains the same
  * elements as all_channels. */
-static HT_HEAD(channel_gid_map, channel_s) channel_gid_map = HT_INITIALIZER();
+static HT_HEAD(channel_gid_map, channel_t) channel_gid_map = HT_INITIALIZER();
 
 static unsigned
 channel_id_hash(const channel_t *chan)
@@ -118,13 +118,13 @@ channel_id_eq(const channel_t *a, const channel_t *b)
 {
   return a->global_identifier == b->global_identifier;
 }
-HT_PROTOTYPE(channel_gid_map, channel_s, gidmap_node,
+HT_PROTOTYPE(channel_gid_map, channel_t, gidmap_node,
              channel_id_hash, channel_id_eq)
-HT_GENERATE2(channel_gid_map, channel_s, gidmap_node,
+HT_GENERATE2(channel_gid_map, channel_t, gidmap_node,
              channel_id_hash, channel_id_eq,
              0.6, tor_reallocarray_, tor_free_)
 
-HANDLE_IMPL(channel, channel_s,)
+HANDLE_IMPL(channel, channel_t,)
 
 /* Counter for ID numbers */
 static uint64_t n_channels_allocated = 0;
@@ -137,13 +137,13 @@ static uint64_t n_channels_allocated = 0;
  * If more than one channel exists, follow the next_with_same_id pointer
  * as a linked list.
  */
-static HT_HEAD(channel_idmap, channel_idmap_entry_s) channel_identity_map =
+static HT_HEAD(channel_idmap, channel_idmap_entry_t) channel_identity_map =
   HT_INITIALIZER();
 
-typedef struct channel_idmap_entry_s {
-  HT_ENTRY(channel_idmap_entry_s) node;
+typedef struct channel_idmap_entry_t {
+  HT_ENTRY(channel_idmap_entry_t) node;
   uint8_t digest[DIGEST_LEN];
-  TOR_LIST_HEAD(channel_list_s, channel_s) channel_list;
+  TOR_LIST_HEAD(channel_list_s, channel_t) channel_list;
 } channel_idmap_entry_t;
 
 static inline unsigned
@@ -159,9 +159,9 @@ channel_idmap_eq(const channel_idmap_entry_t *a,
   return tor_memeq(a->digest, b->digest, DIGEST_LEN);
 }
 
-HT_PROTOTYPE(channel_idmap, channel_idmap_entry_s, node, channel_idmap_hash,
+HT_PROTOTYPE(channel_idmap, channel_idmap_entry_t, node, channel_idmap_hash,
              channel_idmap_eq)
-HT_GENERATE2(channel_idmap, channel_idmap_entry_s, node, channel_idmap_hash,
+HT_GENERATE2(channel_idmap, channel_idmap_entry_t, node, channel_idmap_hash,
              channel_idmap_eq, 0.5,  tor_reallocarray_, tor_free_)
 
 /* Functions to maintain the digest map */
diff --git a/src/core/or/channel.h b/src/core/or/channel.h
index 3533e6176..7f5bd9bf2 100644
--- a/src/core/or/channel.h
+++ b/src/core/or/channel.h
@@ -178,15 +178,15 @@ typedef enum {
  * to a particular node, and once constructed support the abstract operations
  * defined below.
  */
-struct channel_s {
+struct channel_t {
   /** Magic number for type-checking cast macros */
   uint32_t magic;
 
   /** List entry for hashtable for global-identifier lookup. */
-  HT_ENTRY(channel_s) gidmap_node;
+  HT_ENTRY(channel_t) gidmap_node;
 
   /** Handle entry for handle-based lookup */
-  HANDLE_ENTRY(channel, channel_s);
+  HANDLE_ENTRY(channel, channel_t);
 
   /** Current channel state */
   channel_state_t state;
@@ -397,7 +397,7 @@ struct channel_s {
    * Linked list of channels with the same RSA identity digest, for use with
    * the digest->channel map
    */
-  TOR_LIST_ENTRY(channel_s) next_with_same_id;
+  TOR_LIST_ENTRY(channel_t) next_with_same_id;
 
   /** Circuit mux for circuits sending on this channel */
   circuitmux_t *cmux;
@@ -464,7 +464,7 @@ struct channel_s {
   uint64_t n_cells_xmitted, n_bytes_xmitted;
 };
 
-struct channel_listener_s {
+struct channel_listener_t {
   /** Current channel listener state */
   channel_listener_state_t state;
 
@@ -773,7 +773,7 @@ int packed_cell_is_destroy(channel_t *chan,
                            circid_t *circid_out);
 
 /* Declare the handle helpers */
-HANDLE_DECL(channel, channel_s,)
+HANDLE_DECL(channel, channel_t,)
 #define channel_handle_free(h)    \
   FREE_AND_NULL(channel_handle_t, channel_handle_free_, (h))
 #undef tor_timer_t
diff --git a/src/core/or/channeltls.h b/src/core/or/channeltls.h
index 634a2a00e..ff703a497 100644
--- a/src/core/or/channeltls.h
+++ b/src/core/or/channeltls.h
@@ -24,7 +24,7 @@ struct curve25519_public_key_t;
 
 #ifdef TOR_CHANNEL_INTERNAL_
 
-struct channel_tls_s {
+struct channel_tls_t {
   /* Base channel_t struct */
   channel_t base_;
   /* or_connection_t pointer */
diff --git a/src/core/or/circuitmux.c b/src/core/or/circuitmux.c
index f92a53eb2..29f92181c 100644
--- a/src/core/or/circuitmux.c
+++ b/src/core/or/circuitmux.c
@@ -94,14 +94,14 @@ typedef struct chanid_circid_muxinfo_t chanid_circid_muxinfo_t;
  * a count of queued cells.
  */
 
-typedef struct circuit_muxinfo_s circuit_muxinfo_t;
+typedef struct circuit_muxinfo_t circuit_muxinfo_t;
 
 /*
  * This struct holds whatever we want to store per attached circuit on a
  * circuitmux_t; right now, just the count of queued cells and the direction.
  */
 
-struct circuit_muxinfo_s {
+struct circuit_muxinfo_t {
   /* Count of cells on this circuit at last update */
   unsigned int cell_count;
   /* Direction of flow */
diff --git a/src/core/or/circuitmux.h b/src/core/or/circuitmux.h
index 5127ee320..c3d2e4f89 100644
--- a/src/core/or/circuitmux.h
+++ b/src/core/or/circuitmux.h
@@ -12,11 +12,11 @@
 #include "core/or/or.h"
 #include "lib/testsupport/testsupport.h"
 
-typedef struct circuitmux_policy_s circuitmux_policy_t;
-typedef struct circuitmux_policy_data_s circuitmux_policy_data_t;
-typedef struct circuitmux_policy_circ_data_s circuitmux_policy_circ_data_t;
+typedef struct circuitmux_policy_t circuitmux_policy_t;
+typedef struct circuitmux_policy_data_t circuitmux_policy_data_t;
+typedef struct circuitmux_policy_circ_data_t circuitmux_policy_circ_data_t;
 
-struct circuitmux_policy_s {
+struct circuitmux_policy_t {
   /* Allocate cmux-wide policy-specific data */
   circuitmux_policy_data_t * (*alloc_cmux_data)(circuitmux_t *cmux);
   /* Free cmux-wide policy-specific data */
@@ -67,7 +67,7 @@ struct circuitmux_policy_s {
  * wide data; it just has the magic number in the base struct.
  */
 
-struct circuitmux_policy_data_s {
+struct circuitmux_policy_data_t {
   uint32_t magic;
 };
 
@@ -76,7 +76,7 @@ struct circuitmux_policy_data_s {
  * specific data; it just has the magic number in the base struct.
  */
 
-struct circuitmux_policy_circ_data_s {
+struct circuitmux_policy_circ_data_t {
   uint32_t magic;
 };
 
@@ -173,7 +173,7 @@ typedef HT_HEAD(chanid_circid_muxinfo_map, chanid_circid_muxinfo_t)
  * Structures for circuitmux.c
  */
 
-struct circuitmux_s {
+struct circuitmux_t {
   /* Keep count of attached, active circuits */
   unsigned int n_circuits, n_active_circuits;
 
diff --git a/src/core/or/circuitmux_ewma.h b/src/core/or/circuitmux_ewma.h
index 2bd9fa71f..ba381cd38 100644
--- a/src/core/or/circuitmux_ewma.h
+++ b/src/core/or/circuitmux_ewma.h
@@ -25,9 +25,9 @@ void circuitmux_ewma_free_all(void);
 
 /*** EWMA structures ***/
 
-typedef struct cell_ewma_s cell_ewma_t;
-typedef struct ewma_policy_data_s ewma_policy_data_t;
-typedef struct ewma_policy_circ_data_s ewma_policy_circ_data_t;
+typedef struct cell_ewma_t cell_ewma_t;
+typedef struct ewma_policy_data_t ewma_policy_data_t;
+typedef struct ewma_policy_circ_data_t ewma_policy_circ_data_t;
 
 /**
  * The cell_ewma_t structure keeps track of how many cells a circuit has
@@ -36,7 +36,7 @@ typedef struct ewma_policy_circ_data_s ewma_policy_circ_data_t;
  * connection in channel_flush_from_first_active_circuit().
  */
 
-struct cell_ewma_s {
+struct cell_ewma_t {
   /** The last 'tick' at which we recalibrated cell_count.
    *
    * A cell sent at exactly the start of this tick has weight 1.0. Cells sent
@@ -53,7 +53,7 @@ struct cell_ewma_s {
   int heap_index;
 };
 
-struct ewma_policy_data_s {
+struct ewma_policy_data_t {
   circuitmux_policy_data_t base_;
 
   /**
@@ -72,7 +72,7 @@ struct ewma_policy_data_s {
   unsigned int active_circuit_pqueue_last_recalibrated;
 };
 
-struct ewma_policy_circ_data_s {
+struct ewma_policy_circ_data_t {
   circuitmux_policy_circ_data_t base_;
 
   /**
diff --git a/src/core/or/circuitstats.h b/src/core/or/circuitstats.h
index 845d7b672..23279295c 100644
--- a/src/core/or/circuitstats.h
+++ b/src/core/or/circuitstats.h
@@ -175,7 +175,7 @@ typedef struct {
 } network_liveness_t;
 
 /** Structure for circuit build times history */
-struct circuit_build_times_s {
+struct circuit_build_times_t {
   /** The circular array of recorded build times in milliseconds */
   build_time_t circuit_build_times[CBT_NCIRCUITS_TO_OBSERVE];
   /** Current index in the circuit_build_times circular array */
diff --git a/src/core/or/or.h b/src/core/or/or.h
index 990cfacbc..c044936d3 100644
--- a/src/core/or/or.h
+++ b/src/core/or/or.h
@@ -609,21 +609,21 @@ typedef uint32_t circid_t;
 /** Identifies a stream on a circuit */
 typedef uint16_t streamid_t;
 
-/* channel_t typedef; struct channel_s is in channel.h */
+/* channel_t typedef; struct channel_t is in channel.h */
 
-typedef struct channel_s channel_t;
+typedef struct channel_t channel_t;
 
-/* channel_listener_t typedef; struct channel_listener_s is in channel.h */
+/* channel_listener_t typedef; struct channel_listener_t is in channel.h */
 
-typedef struct channel_listener_s channel_listener_t;
+typedef struct channel_listener_t channel_listener_t;
 
 /* TLS channel stuff */
 
-typedef struct channel_tls_s channel_tls_t;
+typedef struct channel_tls_t channel_tls_t;
 
-/* circuitmux_t typedef; struct circuitmux_s is in circuitmux.h */
+/* circuitmux_t typedef; struct circuitmux_t is in circuitmux.h */
 
-typedef struct circuitmux_s circuitmux_t;
+typedef struct circuitmux_t circuitmux_t;
 
 typedef struct cell_t cell_t;
 typedef struct var_cell_t var_cell_t;
@@ -1013,7 +1013,7 @@ typedef struct or_state_t or_state_t;
 #define BW_MIN_WEIGHT_SCALE 1
 #define BW_MAX_WEIGHT_SCALE INT32_MAX
 
-typedef struct circuit_build_times_s circuit_build_times_t;
+typedef struct circuit_build_times_t circuit_build_times_t;
 
 /********************************* config.c ***************************/
 
diff --git a/src/core/or/or_circuit_st.h b/src/core/or/or_circuit_st.h
index f3eb86161..4dd45d909 100644
--- a/src/core/or/or_circuit_st.h
+++ b/src/core/or/or_circuit_st.h
@@ -27,7 +27,7 @@ struct or_circuit_t {
   /** Pointer to a workqueue entry, if this circuit has given an onionskin to
    * a cpuworker and is waiting for a response. Used to decide whether it is
    * safe to free a circuit or if it is still in use by a cpuworker. */
-  struct workqueue_entry_s *workqueue_entry;
+  struct workqueue_entry_t *workqueue_entry;
 
   /** The circuit_id used in the previous (backward) hop of this circuit. */
   circid_t p_circ_id;
diff --git a/src/core/or/relay.h b/src/core/or/relay.h
index 99f755301..46e11bc2b 100644
--- a/src/core/or/relay.h
+++ b/src/core/or/relay.h
@@ -107,7 +107,7 @@ handle_relay_cell_command(cell_t *cell, circuit_t *circ,
 STATIC int connected_cell_parse(const relay_header_t *rh, const cell_t *cell,
                          tor_addr_t *addr_out, int *ttl_out);
 /** An address-and-ttl tuple as yielded by resolved_cell_parse */
-typedef struct address_ttl_s {
+typedef struct address_ttl_t {
   tor_addr_t addr;
   char *hostname;
   int ttl;
diff --git a/src/core/or/relay_crypto_st.h b/src/core/or/relay_crypto_st.h
index 1b1eb16df..7bc1e5abc 100644
--- a/src/core/or/relay_crypto_st.h
+++ b/src/core/or/relay_crypto_st.h
@@ -12,7 +12,7 @@
 #ifndef RELAY_CRYPTO_ST_H
 #define RELAY_CRYPTO_ST_H
 
-#define crypto_cipher_t aes_cnt_cipher
+#define crypto_cipher_t aes_cnt_cipher_t
 struct crypto_cipher_t;
 struct crypto_digest_t;
 
diff --git a/src/core/or/scheduler.h b/src/core/or/scheduler.h
index 843be2603..b82f8730b 100644
--- a/src/core/or/scheduler.h
+++ b/src/core/or/scheduler.h
@@ -40,7 +40,7 @@ typedef enum {
  * doesn't create any state for itself, thus it has nothing to free when Tor
  * is shutting down), then set that function pointer to NULL.
  */
-typedef struct scheduler_s {
+typedef struct scheduler_t {
   /* Scheduler type. This is used for logging when the scheduler is switched
    * during runtime. */
   scheduler_types_t type;
@@ -173,8 +173,8 @@ void scheduler_touch_channel(channel_t *chan);
 
 /* Socket table entry which holds information of a channel's socket and kernel
  * TCP information. Only used by KIST. */
-typedef struct socket_table_ent_s {
-  HT_ENTRY(socket_table_ent_s) node;
+typedef struct socket_table_ent_t {
+  HT_ENTRY(socket_table_ent_t) node;
   const channel_t *chan;
   /* Amount written this scheduling run */
   uint64_t written;
@@ -187,7 +187,7 @@ typedef struct socket_table_ent_s {
   uint32_t notsent;
 } socket_table_ent_t;
 
-typedef HT_HEAD(outbuf_table_s, outbuf_table_ent_s) outbuf_table_t;
+typedef HT_HEAD(outbuf_table_s, outbuf_table_ent_t) outbuf_table_t;
 
 MOCK_DECL(int, channel_should_write_to_kernel,
           (outbuf_table_t *table, channel_t *chan));
diff --git a/src/core/or/scheduler_kist.c b/src/core/or/scheduler_kist.c
index f4bac7b87..660c222a3 100644
--- a/src/core/or/scheduler_kist.c
+++ b/src/core/or/scheduler_kist.c
@@ -51,13 +51,13 @@ socket_table_ent_eq(const socket_table_ent_t *a, const socket_table_ent_t *b)
   return a->chan == b->chan;
 }
 
-typedef HT_HEAD(socket_table_s, socket_table_ent_s) socket_table_t;
+typedef HT_HEAD(socket_table_s, socket_table_ent_t) socket_table_t;
 
 static socket_table_t socket_table = HT_INITIALIZER();
 
-HT_PROTOTYPE(socket_table_s, socket_table_ent_s, node, socket_table_ent_hash,
+HT_PROTOTYPE(socket_table_s, socket_table_ent_t, node, socket_table_ent_hash,
              socket_table_ent_eq)
-HT_GENERATE2(socket_table_s, socket_table_ent_s, node, socket_table_ent_hash,
+HT_GENERATE2(socket_table_s, socket_table_ent_t, node, socket_table_ent_hash,
              socket_table_ent_eq, 0.6, tor_reallocarray, tor_free_)
 
 /* outbuf_table hash table stuff. The outbuf_table keeps track of which
@@ -65,8 +65,8 @@ HT_GENERATE2(socket_table_s, socket_table_ent_s, node, socket_table_ent_hash,
  * a write from outbuf to kernel periodically during a run and at the end of a
  * run. */
 
-typedef struct outbuf_table_ent_s {
-  HT_ENTRY(outbuf_table_ent_s) node;
+typedef struct outbuf_table_ent_t {
+  HT_ENTRY(outbuf_table_ent_t) node;
   channel_t *chan;
 } outbuf_table_ent_t;
 
@@ -82,9 +82,9 @@ outbuf_table_ent_eq(const outbuf_table_ent_t *a, const outbuf_table_ent_t *b)
   return a->chan->global_identifier == b->chan->global_identifier;
 }
 
-HT_PROTOTYPE(outbuf_table_s, outbuf_table_ent_s, node, outbuf_table_ent_hash,
+HT_PROTOTYPE(outbuf_table_s, outbuf_table_ent_t, node, outbuf_table_ent_hash,
              outbuf_table_ent_eq)
-HT_GENERATE2(outbuf_table_s, outbuf_table_ent_s, node, outbuf_table_ent_hash,
+HT_GENERATE2(outbuf_table_s, outbuf_table_ent_t, node, outbuf_table_ent_hash,
              outbuf_table_ent_eq, 0.6, tor_reallocarray, tor_free_)
 
 /*****************************************************************************
diff --git a/src/ext/timeouts/timeout.h b/src/ext/timeouts/timeout.h
index 1ed309fd0..f1028bfc8 100644
--- a/src/ext/timeouts/timeout.h
+++ b/src/ext/timeouts/timeout.h
@@ -89,10 +89,10 @@ typedef uint64_t timeout_t;
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
 #ifndef TIMEOUT_CB_OVERRIDE
-struct timeout_cb {
+struct timeout_cb_t {
 	void (*fn)(void);
 	void *arg;
-}; /* struct timeout_cb */
+}; /* struct timeout_cb_t */
 #endif
 
 /*
@@ -125,7 +125,7 @@ struct timeout {
 	/* entry member for struct timeout_list lists */
 
 #ifndef TIMEOUT_DISABLE_CALLBACKS
-	struct timeout_cb callback;
+	struct timeout_cb_t callback;
 	/* optional callback information */
 #endif
 
diff --git a/src/feature/client/entrynodes.h b/src/feature/client/entrynodes.h
index cb53d0c3f..f2978bc48 100644
--- a/src/feature/client/entrynodes.h
+++ b/src/feature/client/entrynodes.h
@@ -15,7 +15,7 @@
 #include "lib/container/handles.h"
 
 /* Forward declare for guard_selection_t; entrynodes.c has the real struct */
-typedef struct guard_selection_s guard_selection_t;
+typedef struct guard_selection_t guard_selection_t;
 
 /* Forward declare for entry_guard_t; the real declaration is private. */
 typedef struct entry_guard_t entry_guard_t;
@@ -210,7 +210,7 @@ typedef enum guard_selection_type_t {
  * See the module documentation for entrynodes.c for more information
  * about guard selection algorithms.
  */
-struct guard_selection_s {
+struct guard_selection_t {
   /**
    * The name for this guard-selection object. (Must not contain spaces).
    */
diff --git a/src/feature/control/control_events.c b/src/feature/control/control_events.c
index 12b73641b..2b7f2a83b 100644
--- a/src/feature/control/control_events.c
+++ b/src/feature/control/control_events.c
@@ -317,7 +317,7 @@ control_per_second_events(void)
 
 /** Represents an event that's queued to be sent to one or more
  * controllers. */
-typedef struct queued_event_s {
+typedef struct queued_event_t {
   uint16_t event;
   char *msg;
 } queued_event_t;
@@ -1211,7 +1211,7 @@ control_event_circuit_cell_stats(void)
 static int next_measurement_idx = 0;
 /* number of entries set in n_measurements */
 static int n_measurements = 0;
-static struct cached_bw_event_s {
+static struct cached_bw_event_t {
   uint32_t n_read;
   uint32_t n_written;
 } cached_bw_events[N_BW_EVENTS_TO_CACHE];
@@ -1250,7 +1250,7 @@ get_bw_samples(void)
 
   for (i = 0; i < n_measurements; ++i) {
     tor_assert(0 <= idx && idx < N_BW_EVENTS_TO_CACHE);
-    const struct cached_bw_event_s *bwe = &cached_bw_events[idx];
+    const struct cached_bw_event_t *bwe = &cached_bw_events[idx];
 
     smartlist_add_asprintf(elements, "%u,%u",
                            (unsigned)bwe->n_read,
diff --git a/src/feature/dirauth/bwauth.c b/src/feature/dirauth/bwauth.c
index e60c8b86b..b1cde7962 100644
--- a/src/feature/dirauth/bwauth.c
+++ b/src/feature/dirauth/bwauth.c
@@ -56,7 +56,7 @@ dirserv_get_last_n_measured_bws(void)
 }
 
 /** Measured bandwidth cache entry */
-typedef struct mbw_cache_entry_s {
+typedef struct mbw_cache_entry_t {
   long mbw_kb;
   time_t as_of;
 } mbw_cache_entry_t;
diff --git a/src/feature/dirauth/dircollate.c b/src/feature/dirauth/dircollate.c
index 7992e3a85..733afbd27 100644
--- a/src/feature/dirauth/dircollate.c
+++ b/src/feature/dirauth/dircollate.c
@@ -32,8 +32,8 @@ static void dircollator_collate_by_ed25519(dircollator_t *dc);
 
 /** Hashtable entry mapping a pair of digests (actually an ed25519 key and an
  * RSA SHA1 digest) to an array of vote_routerstatus_t. */
-typedef struct ddmap_entry_s {
-  HT_ENTRY(ddmap_entry_s) node;
+typedef struct ddmap_entry_t {
+  HT_ENTRY(ddmap_entry_t) node;
   /** A SHA1-RSA1024 identity digest and Ed25519 identity key,
    * concatenated.  (If there is no ed25519 identity key, there is no
    * entry in this table.) */
@@ -89,9 +89,9 @@ ddmap_entry_set_digests(ddmap_entry_t *ent,
   memcpy(ent->d + DIGEST_LEN, ed25519, DIGEST256_LEN);
 }
 
-HT_PROTOTYPE(double_digest_map, ddmap_entry_s, node, ddmap_entry_hash,
+HT_PROTOTYPE(double_digest_map, ddmap_entry_t, node, ddmap_entry_hash,
              ddmap_entry_eq)
-HT_GENERATE2(double_digest_map, ddmap_entry_s, node, ddmap_entry_hash,
+HT_GENERATE2(double_digest_map, ddmap_entry_t, node, ddmap_entry_hash,
              ddmap_entry_eq, 0.6, tor_reallocarray, tor_free_)
 
 /** Helper: add a single vote_routerstatus_t <b>vrs</b> to the collator
diff --git a/src/feature/dirauth/dircollate.h b/src/feature/dirauth/dircollate.h
index 754a09481..46ea3c3c6 100644
--- a/src/feature/dirauth/dircollate.h
+++ b/src/feature/dirauth/dircollate.h
@@ -15,7 +15,7 @@
 #include "lib/testsupport/testsupport.h"
 #include "core/or/or.h"
 
-typedef struct dircollator_s dircollator_t;
+typedef struct dircollator_t dircollator_t;
 
 dircollator_t *dircollator_new(int n_votes, int n_authorities);
 void dircollator_free_(dircollator_t *obj);
@@ -30,11 +30,11 @@ vote_routerstatus_t **dircollator_get_votes_for_router(dircollator_t *dc,
                                                        int idx);
 
 #ifdef DIRCOLLATE_PRIVATE
-struct ddmap_entry_s;
-typedef HT_HEAD(double_digest_map, ddmap_entry_s) double_digest_map_t;
+struct ddmap_entry_t;
+typedef HT_HEAD(double_digest_map, ddmap_entry_t) double_digest_map_t;
 /** A dircollator keeps track of all the routerstatus entries in a
  * set of networkstatus votes, and matches them by an appropriate rule. */
-struct dircollator_s {
+struct dircollator_t {
   /** True iff we have run the collation algorithm. */
   int is_collated;
   /** The total number of votes that we received. */
diff --git a/src/feature/dircache/conscache.c b/src/feature/dircache/conscache.c
index 903fa5bc0..dde5f35df 100644
--- a/src/feature/dircache/conscache.c
+++ b/src/feature/dircache/conscache.c
@@ -138,7 +138,7 @@ consensus_cache_may_overallocate(consensus_cache_t *cache)
  */
 int
 consensus_cache_register_with_sandbox(consensus_cache_t *cache,
-                                      struct sandbox_cfg_elem **cfg)
+                                      struct sandbox_cfg_elem_t **cfg)
 {
 #ifdef MUST_UNMAP_TO_UNLINK
   /* Our Linux sandbox doesn't support huge file lists like the one that would
diff --git a/src/feature/dircache/conscache.h b/src/feature/dircache/conscache.h
index 54c081c06..5e0489f3e 100644
--- a/src/feature/dircache/conscache.h
+++ b/src/feature/dircache/conscache.h
@@ -23,10 +23,10 @@ consensus_cache_t *consensus_cache_open(const char *subdir, int max_entries);
 void consensus_cache_free_(consensus_cache_t *cache);
 #define consensus_cache_free(cache) \
   FREE_AND_NULL(consensus_cache_t, consensus_cache_free_, (cache))
-struct sandbox_cfg_elem;
+struct sandbox_cfg_elem_t;
 int consensus_cache_may_overallocate(consensus_cache_t *cache);
 int consensus_cache_register_with_sandbox(consensus_cache_t *cache,
-                                          struct sandbox_cfg_elem **cfg);
+                                          struct sandbox_cfg_elem_t **cfg);
 void consensus_cache_unmap_lazy(consensus_cache_t *cache, time_t cutoff);
 void consensus_cache_delete_pending(consensus_cache_t *cache,
                                     int force);
diff --git a/src/feature/dircache/consdiffmgr.c b/src/feature/dircache/consdiffmgr.c
index 058ff1f50..556376b02 100644
--- a/src/feature/dircache/consdiffmgr.c
+++ b/src/feature/dircache/consdiffmgr.c
@@ -844,7 +844,7 @@ consdiffmgr_configure(const consdiff_cfg_t *cfg)
  * operations that the consensus diff manager will need.
  */
 int
-consdiffmgr_register_with_sandbox(struct sandbox_cfg_elem **cfg)
+consdiffmgr_register_with_sandbox(struct sandbox_cfg_elem_t **cfg)
 {
   return consensus_cache_register_with_sandbox(cdm_cache_get(), cfg);
 }
diff --git a/src/feature/dircache/consdiffmgr.h b/src/feature/dircache/consdiffmgr.h
index 722235365..f72dd5b28 100644
--- a/src/feature/dircache/consdiffmgr.h
+++ b/src/feature/dircache/consdiffmgr.h
@@ -60,8 +60,8 @@ void consdiffmgr_rescan(void);
 int consdiffmgr_cleanup(void);
 void consdiffmgr_enable_background_compression(void);
 void consdiffmgr_configure(const consdiff_cfg_t *cfg);
-struct sandbox_cfg_elem;
-int consdiffmgr_register_with_sandbox(struct sandbox_cfg_elem **cfg);
+struct sandbox_cfg_elem_t;
+int consdiffmgr_register_with_sandbox(struct sandbox_cfg_elem_t **cfg);
 void consdiffmgr_free_all(void);
 int consdiffmgr_validate(void);
 
diff --git a/src/feature/dircache/dircache.c b/src/feature/dircache/dircache.c
index 9938f9426..940dc3d14 100644
--- a/src/feature/dircache/dircache.c
+++ b/src/feature/dircache/dircache.c
@@ -334,7 +334,7 @@ typedef struct get_handler_args_t {
  * an arguments structure, and must return 0 on success or -1 if we should
  * close the connection.
  **/
-typedef struct url_table_ent_s {
+typedef struct url_table_ent_t {
   const char *string;
   int is_prefix;
   int (*handler)(dir_connection_t *conn, const get_handler_args_t *args);
diff --git a/src/feature/dircommon/fp_pair.c b/src/feature/dircommon/fp_pair.c
index 284600df7..2a21ff85a 100644
--- a/src/feature/dircommon/fp_pair.c
+++ b/src/feature/dircommon/fp_pair.c
@@ -22,14 +22,14 @@
 
 /* Define fp_pair_map_t structures */
 
-struct fp_pair_map_entry_s {
-  HT_ENTRY(fp_pair_map_entry_s) node;
+struct fp_pair_map_entry_t {
+  HT_ENTRY(fp_pair_map_entry_t) node;
   void *val;
   fp_pair_t key;
 };
 
-struct fp_pair_map_s {
-  HT_HEAD(fp_pair_map_impl, fp_pair_map_entry_s) head;
+struct fp_pair_map_t {
+  HT_HEAD(fp_pair_map_impl, fp_pair_map_entry_t) head;
 };
 
 /*
@@ -56,9 +56,9 @@ fp_pair_map_entry_hash(const fp_pair_map_entry_t *a)
  * Hash table functions for fp_pair_map_t
  */
 
-HT_PROTOTYPE(fp_pair_map_impl, fp_pair_map_entry_s, node,
+HT_PROTOTYPE(fp_pair_map_impl, fp_pair_map_entry_t, node,
              fp_pair_map_entry_hash, fp_pair_map_entries_eq)
-HT_GENERATE2(fp_pair_map_impl, fp_pair_map_entry_s, node,
+HT_GENERATE2(fp_pair_map_impl, fp_pair_map_entry_t, node,
              fp_pair_map_entry_hash, fp_pair_map_entries_eq,
              0.6, tor_reallocarray_, tor_free_)
 
diff --git a/src/feature/dircommon/fp_pair.h b/src/feature/dircommon/fp_pair.h
index 5041583e8..9f06a8c86 100644
--- a/src/feature/dircommon/fp_pair.h
+++ b/src/feature/dircommon/fp_pair.h
@@ -19,8 +19,8 @@ typedef struct {
  * Declare fp_pair_map_t functions and structs
  */
 
-typedef struct fp_pair_map_entry_s fp_pair_map_entry_t;
-typedef struct fp_pair_map_s fp_pair_map_t;
+typedef struct fp_pair_map_entry_t fp_pair_map_entry_t;
+typedef struct fp_pair_map_t fp_pair_map_t;
 typedef fp_pair_map_entry_t *fp_pair_map_iter_t;
 
 fp_pair_map_t * fp_pair_map_new(void);
diff --git a/src/lib/crypt_ops/aes.h b/src/lib/crypt_ops/aes.h
index 7c774062d..e47294e9a 100644
--- a/src/lib/crypt_ops/aes.h
+++ b/src/lib/crypt_ops/aes.h
@@ -16,7 +16,7 @@
 #include "lib/cc/torint.h"
 #include "lib/malloc/malloc.h"
 
-typedef struct aes_cnt_cipher aes_cnt_cipher_t;
+typedef struct aes_cnt_cipher_t aes_cnt_cipher_t;
 
 aes_cnt_cipher_t* aes_new_cipher(const uint8_t *key, const uint8_t *iv,
                                  int key_bits);
diff --git a/src/lib/crypt_ops/aes_openssl.c b/src/lib/crypt_ops/aes_openssl.c
index 64564892a..d493b1846 100644
--- a/src/lib/crypt_ops/aes_openssl.c
+++ b/src/lib/crypt_ops/aes_openssl.c
@@ -154,7 +154,7 @@ evaluate_ctr_for_aes(void)
 /* Interface to AES code, and counter implementation */
 
 /** Implements an AES counter-mode cipher. */
-struct aes_cnt_cipher {
+struct aes_cnt_cipher_t {
 /** This next element (however it's defined) is the AES key. */
   union {
     EVP_CIPHER_CTX evp;
diff --git a/src/lib/crypt_ops/crypto_cipher.h b/src/lib/crypt_ops/crypto_cipher.h
index 88d63c1df..af0010401 100644
--- a/src/lib/crypt_ops/crypto_cipher.h
+++ b/src/lib/crypt_ops/crypto_cipher.h
@@ -25,7 +25,7 @@
 /** Length of our symmetric cipher's keys of 256-bit. */
 #define CIPHER256_KEY_LEN 32
 
-typedef struct aes_cnt_cipher crypto_cipher_t;
+typedef struct aes_cnt_cipher_t crypto_cipher_t;
 
 /* environment setup */
 crypto_cipher_t *crypto_cipher_new(const char *key);
diff --git a/src/lib/crypt_ops/crypto_ope.h b/src/lib/crypt_ops/crypto_ope.h
index d6a81dbcc..fcac60427 100644
--- a/src/lib/crypt_ops/crypto_ope.h
+++ b/src/lib/crypt_ops/crypto_ope.h
@@ -42,10 +42,10 @@ void crypto_ope_free_(crypto_ope_t *ope);
 uint64_t crypto_ope_encrypt(const crypto_ope_t *ope, int plaintext);
 
 #ifdef CRYPTO_OPE_PRIVATE
-struct aes_cnt_cipher;
-STATIC struct aes_cnt_cipher *ope_get_cipher(const crypto_ope_t *ope,
+struct aes_cnt_cipher_t;
+STATIC struct aes_cnt_cipher_t *ope_get_cipher(const crypto_ope_t *ope,
                                               uint32_t initial_idx);
-STATIC uint64_t sum_values_from_cipher(struct aes_cnt_cipher *c, size_t n);
+STATIC uint64_t sum_values_from_cipher(struct aes_cnt_cipher_t *c, size_t n);
 #endif /* defined(CRYPTO_OPE_PRIVATE) */
 
 #endif /* !defined(CRYPTO_OPE_H) */
diff --git a/src/lib/crypt_ops/crypto_rand_fast.c b/src/lib/crypt_ops/crypto_rand_fast.c
index e6ceb42cc..8625ebd1c 100644
--- a/src/lib/crypt_ops/crypto_rand_fast.c
+++ b/src/lib/crypt_ops/crypto_rand_fast.c
@@ -102,16 +102,16 @@ struct crypto_fast_rng_t {
    * crypto_strongest_rand().
    */
   int16_t n_till_reseed;
-  /** How many bytes are remaining in cbuf.bytes? */
+  /** How many bytes are remaining in cbuf_t.bytes? */
   uint16_t bytes_left;
 #ifdef CHECK_PID
   /** Which process owns this fast_rng?  If this value is zero, we do not
    * need to test the owner. */
   pid_t owner;
 #endif
-  struct cbuf {
+  struct cbuf_t {
     /** The seed (key and IV) that we will use the next time that we refill
-     * cbuf. */
+     * cbuf_t. */
     uint8_t seed[SEED_LEN];
     /**
      * Bytes that we are yielding to the user.  The next byte to be
@@ -122,9 +122,9 @@ struct crypto_fast_rng_t {
   } buf;
 };
 
-/* alignof(uint8_t) should be 1, so there shouldn't be any padding in cbuf.
+/* alignof(uint8_t) should be 1, so there shouldn't be any padding in cbuf_t.
  */
-CTASSERT(sizeof(struct cbuf) == BUFLEN+SEED_LEN);
+CTASSERT(sizeof(struct cbuf_t) == BUFLEN+SEED_LEN);
 /* We're trying to fit all of the RNG state into a nice mmapable chunk.
  */
 CTASSERT(sizeof(crypto_fast_rng_t) <= MAPLEN);
diff --git a/src/lib/evloop/compat_libevent.c b/src/lib/evloop/compat_libevent.c
index c423e7e65..aad82fc9a 100644
--- a/src/lib/evloop/compat_libevent.c
+++ b/src/lib/evloop/compat_libevent.c
@@ -130,7 +130,7 @@ rescan_mainloop_cb(evutil_socket_t fd, short events, void *arg)
 
 /** Initialize the Libevent library and set up the event base. */
 void
-tor_libevent_initialize(tor_libevent_cfg *torcfg)
+tor_libevent_initialize(tor_libevent_cfg_t *torcfg)
 {
   tor_assert(the_event_base == NULL);
   /* some paths below don't use torcfg, so avoid unused variable warnings */
diff --git a/src/lib/evloop/compat_libevent.h b/src/lib/evloop/compat_libevent.h
index 92724c369..f563d292f 100644
--- a/src/lib/evloop/compat_libevent.h
+++ b/src/lib/evloop/compat_libevent.h
@@ -61,15 +61,15 @@ void mainloop_event_free_(mainloop_event_t *event);
 
 /** Defines a configuration for using libevent with Tor: passed as an argument
  * to tor_libevent_initialize() to describe how we want to set up. */
-typedef struct tor_libevent_cfg {
+typedef struct tor_libevent_cfg_t {
   /** How many CPUs should we use (not currently useful). */
   int num_cpus;
   /** How many milliseconds should we allow between updating bandwidth limits?
    * (Not currently useful). */
   int msec_per_tick;
-} tor_libevent_cfg;
+} tor_libevent_cfg_t;
 
-void tor_libevent_initialize(tor_libevent_cfg *cfg);
+void tor_libevent_initialize(tor_libevent_cfg_t *cfg);
 bool tor_libevent_is_initialized(void);
 MOCK_DECL(struct event_base *, tor_libevent_get_base, (void));
 const char *tor_libevent_get_method(void);
diff --git a/src/lib/evloop/timers.c b/src/lib/evloop/timers.c
index c5bb0f595..496434d4a 100644
--- a/src/lib/evloop/timers.c
+++ b/src/lib/evloop/timers.c
@@ -48,7 +48,7 @@
 #include <winsock2.h>
 #endif
 
-struct timeout_cb {
+struct timeout_cb_t {
   timer_cb_fn_t cb;
   void *arg;
 };
@@ -70,7 +70,7 @@ struct timeout_cb {
 /* We always know the global_timeouts object, so we don't need each timeout
  * to keep a pointer to it. */
 #define TIMEOUT_DISABLE_RELATIVE_ACCESS
-/* We're providing our own struct timeout_cb. */
+/* We're providing our own struct timeout_cb_t. */
 #define TIMEOUT_CB_OVERRIDE
 /* We're going to support timers that are pretty far out in advance. Making
  * this big can be inefficient, but having a significant number of timers
diff --git a/src/lib/evloop/workqueue.c b/src/lib/evloop/workqueue.c
index 015b69429..603dddd5a 100644
--- a/src/lib/evloop/workqueue.c
+++ b/src/lib/evloop/workqueue.c
@@ -44,13 +44,13 @@
 #define WORKQUEUE_PRIORITY_LAST WQ_PRI_LOW
 #define WORKQUEUE_N_PRIORITIES (((int) WORKQUEUE_PRIORITY_LAST)+1)
 
-TOR_TAILQ_HEAD(work_tailq_t, workqueue_entry_s);
+TOR_TAILQ_HEAD(work_tailq_t, workqueue_entry_t);
 typedef struct work_tailq_t work_tailq_t;
 
-struct threadpool_s {
+struct threadpool_t {
   /** An array of pointers to workerthread_t: one for each running worker
    * thread. */
-  struct workerthread_s **threads;
+  struct workerthread_t **threads;
 
   /** Condition variable that we wait on when we have no work, and which
    * gets signaled when our queue becomes nonempty. */
@@ -92,14 +92,14 @@ struct threadpool_s {
 /** Number of bits needed to hold all legal values of workqueue_priority_t */
 #define WORKQUEUE_PRIORITY_BITS 2
 
-struct workqueue_entry_s {
+struct workqueue_entry_t {
   /** The next workqueue_entry_t that's pending on the same thread or
    * reply queue. */
-  TOR_TAILQ_ENTRY(workqueue_entry_s) next_work;
+  TOR_TAILQ_ENTRY(workqueue_entry_t) next_work;
   /** The threadpool to which this workqueue_entry_t was assigned. This field
    * is set when the workqueue_entry_t is created, and won't be cleared until
    * after it's handled in the main thread. */
-  struct threadpool_s *on_pool;
+  struct threadpool_t *on_pool;
   /** True iff this entry is waiting for a worker to start processing it. */
   uint8_t pending;
   /** Priority of this entry. */
@@ -112,22 +112,22 @@ struct workqueue_entry_s {
   void *arg;
 };
 
-struct replyqueue_s {
+struct replyqueue_t {
   /** Mutex to protect the answers field */
   tor_mutex_t lock;
   /** Doubly-linked list of answers that the reply queue needs to handle. */
-  TOR_TAILQ_HEAD(, workqueue_entry_s) answers;
+  TOR_TAILQ_HEAD(, workqueue_entry_t) answers;
 
   /** Mechanism to wake up the main thread when it is receiving answers. */
   alert_sockets_t alert;
 };
 
 /** A worker thread represents a single thread in a thread pool. */
-typedef struct workerthread_s {
+typedef struct workerthread_t {
   /** Which thread it this?  In range 0..in_pool->n_threads-1 */
   int index;
   /** The pool this thread is a part of. */
-  struct threadpool_s *in_pool;
+  struct threadpool_t *in_pool;
   /** User-supplied state field that we pass to the worker functions of each
    * work item. */
   void *state;
diff --git a/src/lib/evloop/workqueue.h b/src/lib/evloop/workqueue.h
index d0ee8f2be..ae07eeafa 100644
--- a/src/lib/evloop/workqueue.h
+++ b/src/lib/evloop/workqueue.h
@@ -13,12 +13,12 @@
 
 /** A replyqueue is used to tell the main thread about the outcome of
  * work that we queued for the workers. */
-typedef struct replyqueue_s replyqueue_t;
+typedef struct replyqueue_t replyqueue_t;
 /** A thread-pool manages starting threads and passing work to them. */
-typedef struct threadpool_s threadpool_t;
+typedef struct threadpool_t threadpool_t;
 /** A workqueue entry represents a request that has been passed to a thread
  * pool. */
-typedef struct workqueue_entry_s workqueue_entry_t;
+typedef struct workqueue_entry_t workqueue_entry_t;
 
 /** Possible return value from a work function: */
 typedef enum workqueue_reply_t {
diff --git a/src/lib/fs/storagedir.h b/src/lib/fs/storagedir.h
index 7e6633a0b..f28d13ddb 100644
--- a/src/lib/fs/storagedir.h
+++ b/src/lib/fs/storagedir.h
@@ -15,7 +15,7 @@
 
 typedef struct storage_dir_t storage_dir_t;
 struct config_line_t;
-struct sandbox_cfg_elem;
+struct sandbox_cfg_elem_t;
 struct tor_mmap_t;
 struct smartlist_t;
 
@@ -25,7 +25,7 @@ void storage_dir_free_(storage_dir_t *d);
   FREE_AND_NULL(storage_dir_t, storage_dir_free_, (d))
 
 int storage_dir_register_with_sandbox(storage_dir_t *d,
-                                      struct sandbox_cfg_elem **cfg);
+                                      struct sandbox_cfg_elem_t **cfg);
 const struct smartlist_t *storage_dir_list(storage_dir_t *d);
 uint64_t storage_dir_get_usage(storage_dir_t *d);
 struct tor_mmap_t *storage_dir_map(storage_dir_t *d, const char *fname);
diff --git a/src/lib/math/prob_distr.c b/src/lib/math/prob_distr.c
index f9d65073f..757cd9bdd 100644
--- a/src/lib/math/prob_distr.c
+++ b/src/lib/math/prob_distr.c
@@ -1418,7 +1418,7 @@ uniform_isf(const struct dist *dist, double p)
   return (p < 0.5 ? (U->b - w*p) : (U->a + w*(1 - p)));
 }
 
-const struct dist_ops uniform_ops = {
+const struct dist_ops_t uniform_ops = {
   .name = "uniform",
   .sample = uniform_sample,
   .cdf = uniform_cdf,
@@ -1472,7 +1472,7 @@ logistic_isf(const struct dist *dist, double p)
   return isf_logistic(p, L->mu, L->sigma);
 }
 
-const struct dist_ops logistic_ops = {
+const struct dist_ops_t logistic_ops = {
   .name = "logistic",
   .sample = logistic_sample,
   .cdf = logistic_cdf,
@@ -1521,7 +1521,7 @@ log_logistic_isf(const struct dist *dist, double p)
   return isf_log_logistic(p, LL->alpha, LL->beta);
 }
 
-const struct dist_ops log_logistic_ops = {
+const struct dist_ops_t log_logistic_ops = {
   .name = "log logistic",
   .sample = log_logistic_sample,
   .cdf = log_logistic_cdf,
@@ -1570,7 +1570,7 @@ weibull_isf(const struct dist *dist, double p)
   return isf_weibull(p, W->lambda, W->k);
 }
 
-const struct dist_ops weibull_ops = {
+const struct dist_ops_t weibull_ops = {
   .name = "Weibull",
   .sample = weibull_sample,
   .cdf = weibull_cdf,
@@ -1619,7 +1619,7 @@ genpareto_isf(const struct dist *dist, double p)
   return isf_genpareto(p, GP->mu, GP->sigma, GP->xi);
 }
 
-const struct dist_ops genpareto_ops = {
+const struct dist_ops_t genpareto_ops = {
   .name = "generalized Pareto",
   .sample = genpareto_sample,
   .cdf = genpareto_cdf,
@@ -1678,7 +1678,7 @@ geometric_isf(const struct dist *dist, double p)
   return log(p)/log1p(-G->p);
 }
 
-const struct dist_ops geometric_ops = {
+const struct dist_ops_t geometric_ops = {
   .name = "geometric (1-based)",
   .sample = geometric_sample,
   .cdf = geometric_cdf,
diff --git a/src/lib/math/prob_distr.h b/src/lib/math/prob_distr.h
index a93d88895..f47bf09c5 100644
--- a/src/lib/math/prob_distr.h
+++ b/src/lib/math/prob_distr.h
@@ -16,12 +16,12 @@
  * Container for distribution parameters for sampling, CDF, &c.
  */
 struct dist {
-  const struct dist_ops *ops;
+  const struct dist_ops_t *ops;
 };
 
 /**
  * Untyped initializer element for struct dist using the specified
- * struct dist_ops pointer.  Don't actually use this directly -- use
+ * struct dist_ops_t pointer.  Don't actually use this directly -- use
  * the type-specific macro built out of DIST_BASE_TYPED below -- but if
  * you did use this directly, it would be something like:
  *
@@ -62,7 +62,7 @@ struct dist {
 
 /**
 * Typed initializer element for struct dist using the specified struct
-* dist_ops pointer.  Don't actually use this directly -- use a
+* dist_ops_t pointer.  Don't actually use this directly -- use a
 * type-specific macro built out of it -- but if you did use this
 * directly, it would be something like:
 *
@@ -82,7 +82,7 @@ struct dist {
 *       double phi;
 *     };
 *
-*     struct dist_ops foo_ops = ...;
+*     struct dist_ops_t foo_ops = ...;
 *
 *     #define FOO(OBJ) DIST_BASE_TYPED(&foo_ops, OBJ, struct foo)
 *
@@ -110,7 +110,7 @@ struct dist {
 
 /**
  * Generic operations on distributions.  These simply defer to the
- * corresponding dist_ops function.  In the parlance of C++, these call
+ * corresponding dist_ops_t function.  In the parlance of C++, these call
  * virtual member functions.
  */
 const char *dist_name(const struct dist *);
@@ -125,7 +125,7 @@ double dist_isf(const struct dist *, double p);
  * distributions.  In the parlance of C++, this would be called a
  * `vtable' and the members are virtual member functions.
  */
-struct dist_ops {
+struct dist_ops_t {
   const char *name;
   double (*sample)(const struct dist *);
   double (*cdf)(const struct dist *, double x);
@@ -141,7 +141,7 @@ struct geometric {
   double p; /* success probability */
 };
 
-extern const struct dist_ops geometric_ops;
+extern const struct dist_ops_t geometric_ops;
 
 #define GEOMETRIC(OBJ)                                      \
   DIST_BASE_TYPED(&geometric_ops, OBJ, struct geometric)
@@ -155,7 +155,7 @@ struct genpareto {
   double xi;
 };
 
-extern const struct dist_ops genpareto_ops;
+extern const struct dist_ops_t genpareto_ops;
 
 #define GENPARETO(OBJ)                                      \
   DIST_BASE_TYPED(&genpareto_ops, OBJ, struct genpareto)
@@ -168,7 +168,7 @@ struct weibull {
   double k;
 };
 
-extern const struct dist_ops weibull_ops;
+extern const struct dist_ops_t weibull_ops;
 
 #define WEIBULL(OBJ)                                    \
   DIST_BASE_TYPED(&weibull_ops, OBJ, struct weibull)
@@ -181,7 +181,7 @@ struct log_logistic {
   double beta;
 };
 
-extern const struct dist_ops log_logistic_ops;
+extern const struct dist_ops_t log_logistic_ops;
 
 #define LOG_LOGISTIC(OBJ)                                       \
   DIST_BASE_TYPED(&log_logistic_ops, OBJ, struct log_logistic)
@@ -194,7 +194,7 @@ struct logistic {
   double sigma;
 };
 
-extern const struct dist_ops logistic_ops;
+extern const struct dist_ops_t logistic_ops;
 
 #define LOGISTIC(OBJ)                                   \
   DIST_BASE_TYPED(&logistic_ops, OBJ, struct logistic)
@@ -207,7 +207,7 @@ struct uniform {
   double b;
 };
 
-extern const struct dist_ops uniform_ops;
+extern const struct dist_ops_t uniform_ops;
 
 #define UNIFORM(OBJ)                                    \
   DIST_BASE_TYPED(&uniform_ops, OBJ, struct uniform)
diff --git a/src/lib/sandbox/sandbox.h b/src/lib/sandbox/sandbox.h
index b4ae6e5c0..5e0591ba8 100644
--- a/src/lib/sandbox/sandbox.h
+++ b/src/lib/sandbox/sandbox.h
@@ -29,10 +29,10 @@
 #define USE_LIBSECCOMP
 #endif
 
-struct sandbox_cfg_elem;
+struct sandbox_cfg_elem_t;
 
 /** Typedef to structure used to manage a sandbox configuration. */
-typedef struct sandbox_cfg_elem sandbox_cfg_t;
+typedef struct sandbox_cfg_elem_t sandbox_cfg_t;
 
 /**
  * Linux definitions
@@ -58,7 +58,7 @@ typedef enum {
  *  Configuration parameter structure associated with the LIBSECCOMP2
  *  implementation.
  */
-typedef struct smp_param {
+typedef struct smp_param_t {
   /** syscall associated with parameter. */
   int syscall;
 
@@ -77,7 +77,7 @@ typedef struct smp_param {
  * It is implemented as a linked list of parameters. Currently only controls
  * parameters for open, openat, execve, stat64.
  */
-struct sandbox_cfg_elem {
+struct sandbox_cfg_elem_t {
   /** Sandbox implementation which dictates the parameter type. */
   SB_IMPL implem;
 
@@ -85,7 +85,7 @@ struct sandbox_cfg_elem {
   smp_param_t *param;
 
   /** Next element of the configuration*/
-  struct sandbox_cfg_elem *next;
+  struct sandbox_cfg_elem_t *next;
 };
 
 /** Function pointer defining the prototype of a filter function.*/
diff --git a/src/lib/thread/threads.h b/src/lib/thread/threads.h
index ad9ad98c7..2b956b476 100644
--- a/src/lib/thread/threads.h
+++ b/src/lib/thread/threads.h
@@ -63,7 +63,7 @@ int tor_cond_wait(tor_cond_t *cond, tor_mutex_t *mutex,
 void tor_cond_signal_one(tor_cond_t *cond);
 void tor_cond_signal_all(tor_cond_t *cond);
 
-typedef struct tor_threadlocal_s {
+typedef struct tor_threadlocal_t {
 #ifdef _WIN32
   DWORD index;
 #else
diff --git a/src/test/test-timers.c b/src/test/test-timers.c
index c80fb1e30..8b166d387 100644
--- a/src/test/test-timers.c
+++ b/src/test/test-timers.c
@@ -59,7 +59,7 @@ main(int argc, char **argv)
 {
   (void)argc;
   (void)argv;
-  tor_libevent_cfg cfg;
+  tor_libevent_cfg_t cfg;
   memset(&cfg, 0, sizeof(cfg));
   tor_libevent_initialize(&cfg);
   timers_initialize();
diff --git a/src/test/test_consdiffmgr.c b/src/test/test_consdiffmgr.c
index 74226b8c5..195d3f155 100644
--- a/src/test/test_consdiffmgr.c
+++ b/src/test/test_consdiffmgr.c
@@ -119,7 +119,7 @@ typedef struct fake_work_queue_ent_t {
   void (*reply_fn)(void *);
   void *arg;
 } fake_work_queue_ent_t;
-static struct workqueue_entry_s *
+static struct workqueue_entry_t *
 mock_cpuworker_queue_work(workqueue_priority_t prio,
                           enum workqueue_reply_t (*fn)(void *, void *),
                           void (*reply_fn)(void *),
@@ -135,7 +135,7 @@ mock_cpuworker_queue_work(workqueue_priority_t prio,
   ent->reply_fn = reply_fn;
   ent->arg = arg;
   smartlist_add(fake_cpuworker_queue, ent);
-  return (struct workqueue_entry_s *)ent;
+  return (struct workqueue_entry_t *)ent;
 }
 static int
 mock_cpuworker_run_work(void)
diff --git a/src/test/test_dispatch.c b/src/test/test_dispatch.c
index a62c18e0c..dbdd3caa1 100644
--- a/src/test/test_dispatch.c
+++ b/src/test/test_dispatch.c
@@ -167,7 +167,7 @@ test_dispatch_no_recipient(void *arg)
   dcfg_free(cfg);
 }
 
-struct coord { int x; int y; };
+struct coord_t { int x; int y; };
 static void
 free_coord(msg_aux_data_t d)
 {
@@ -177,7 +177,7 @@ static char *
 fmt_coord(msg_aux_data_t d)
 {
   char *v;
-  struct coord *c = d.ptr;
+  struct coord_t *c = d.ptr;
   tor_asprintf(&v, "[%d, %d]", c->x, c->y);
   return v;
 }
@@ -225,7 +225,7 @@ test_dispatch_with_types(void *arg)
   r = dispatch_set_alert_fn(d, 2, alert_run_immediate, NULL);
   tt_int_op(r, OP_EQ, 0);
 
-  struct coord *xy = tor_malloc(sizeof(*xy));
+  struct coord_t *xy = tor_malloc(sizeof(*xy));
   xy->x = 13;
   xy->y = 37;
   msg_aux_data_t data = {.ptr = xy};
diff --git a/src/test/test_link_handshake.c b/src/test/test_link_handshake.c
index 18c170003..7d79eb1ed 100644
--- a/src/test/test_link_handshake.c
+++ b/src/test/test_link_handshake.c
@@ -325,7 +325,7 @@ test_link_handshake_certs_ok(void *arg)
   crypto_pk_free(key2);
 }
 
-typedef struct certs_data_s {
+typedef struct certs_data_t {
   int is_ed;
   int is_link_cert;
   or_connection_t *c;
@@ -972,7 +972,7 @@ test_link_handshake_send_authchallenge(void *arg)
   crypto_pk_free(rsa1);
 }
 
-typedef struct authchallenge_data_s {
+typedef struct authchallenge_data_t {
   or_connection_t *c;
   channel_tls_t *chan;
   var_cell_t *cell;
@@ -1171,7 +1171,7 @@ mock_set_circid_type(channel_t *chan,
   (void) consider_identity;
 }
 
-typedef struct authenticate_data_s {
+typedef struct authenticate_data_t {
   int is_ed;
   or_connection_t *c1, *c2;
   channel_tls_t *chan2;
diff --git a/src/test/test_threads.c b/src/test/test_threads.c
index 4a5ecc6fa..c159b71bb 100644
--- a/src/test/test_threads.c
+++ b/src/test/test_threads.c
@@ -155,7 +155,7 @@ test_threads_basic(void *arg)
     tor_mutex_free(thread_test_start2_);
 }
 
-typedef struct cv_testinfo_s {
+typedef struct cv_testinfo_t {
   tor_cond_t *cond;
   tor_mutex_t *mutex;
   int value;
diff --git a/src/test/test_workqueue.c b/src/test/test_workqueue.c
index ba478a45a..108ed9a27 100644
--- a/src/test/test_workqueue.c
+++ b/src/test/test_workqueue.c
@@ -32,7 +32,7 @@ int handled_len;
 bitarray_t *handled;
 #endif
 
-typedef struct state_s {
+typedef struct state_t {
   int magic;
   int n_handled;
   crypto_pk_t *rsa;
@@ -40,13 +40,13 @@ typedef struct state_s {
   int is_shutdown;
 } state_t;
 
-typedef struct rsa_work_s {
+typedef struct rsa_work_t {
   int serial;
   uint8_t msg[128];
   uint8_t msglen;
 } rsa_work_t;
 
-typedef struct ecdh_work_s {
+typedef struct ecdh_work_t {
   int serial;
   union {
     curve25519_public_key_t pk;
@@ -339,7 +339,7 @@ main(int argc, char **argv)
   replyqueue_t *rq;
   threadpool_t *tp;
   int i;
-  tor_libevent_cfg evcfg;
+  tor_libevent_cfg_t evcfg;
   uint32_t as_flags = 0;
 
   for (i = 1; i < argc; ++i) {
diff --git a/src/test/testing_common.c b/src/test/testing_common.c
index c5a4e81fb..c28d02be7 100644
--- a/src/test/testing_common.c
+++ b/src/test/testing_common.c
@@ -266,7 +266,7 @@ main(int c, const char **v)
 
   options = options_new();
 
-  struct tor_libevent_cfg cfg;
+  struct tor_libevent_cfg_t cfg;
   memset(&cfg, 0, sizeof(cfg));
   tor_libevent_initialize(&cfg);
 
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                     
                        
                    18 Nov '19
                    
                        commit 0644530df2bddf083d355d0b22e6bdc63e61bde1
Author: Nick Mathewson <nickm(a)torproject.org>
Date:   Thu Nov 7 08:45:08 2019 -0500
    ntmain: make service_fns struct anonymous.
---
 src/app/main/ntmain.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/app/main/ntmain.c b/src/app/main/ntmain.c
index 9351d9687..a49dfdbbc 100644
--- a/src/app/main/ntmain.c
+++ b/src/app/main/ntmain.c
@@ -66,7 +66,7 @@ static int nt_service_cmd_stop(void);
 
 /** Struct to hold dynamically loaded NT-service related function pointers.
  */
-struct service_fns {
+struct {
   int loaded;
 
   /** @{ */
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                     
                        
                    18 Nov '19
                    
                        commit c34fb3413dee5be00be7299a63c294ddb86b0599
Merge: 183f89cca 59ba61a69
Author: teor <teor(a)torproject.org>
Date:   Mon Nov 18 11:21:37 2019 +1000
    Merge remote-tracking branch 'tor-github/pr/1517'
 changes/ticket32415                  |   3 +
 src/app/config/config.c              |   2 +-
 src/app/main/ntmain.c                |   2 +-
 src/core/mainloop/cpuworker.c        |   4 +-
 src/core/mainloop/cpuworker.h        |   4 +-
 src/core/or/cell_queue_st.h          |   2 +-
 src/core/or/channel.c                |  22 ++---
 src/core/or/channel.h                |  12 +--
 src/core/or/channeltls.h             |   2 +-
 src/core/or/circuitmux.c             |   4 +-
 src/core/or/circuitmux.h             |  14 ++--
 src/core/or/circuitmux_ewma.h        |  12 +--
 src/core/or/circuitpadding.c         |  12 +--
 src/core/or/circuitstats.h           |   2 +-
 src/core/or/destroy_cell_queue_st.h  |   2 +-
 src/core/or/or.h                     |  16 ++--
 src/core/or/or_circuit_st.h          |   2 +-
 src/core/or/relay.h                  |   2 +-
 src/core/or/relay_crypto_st.h        |   2 +-
 src/core/or/scheduler.h              |   8 +-
 src/core/or/scheduler_kist.c         |  14 ++--
 src/ext/timeouts/timeout.h           |   6 +-
 src/feature/client/entrynodes.h      |   4 +-
 src/feature/control/control_events.c |   6 +-
 src/feature/dirauth/bwauth.c         |   2 +-
 src/feature/dirauth/dircollate.c     |   8 +-
 src/feature/dirauth/dircollate.h     |   8 +-
 src/feature/dircache/conscache.c     |   2 +-
 src/feature/dircache/conscache.h     |   4 +-
 src/feature/dircache/consdiffmgr.c   |   2 +-
 src/feature/dircache/consdiffmgr.h   |   4 +-
 src/feature/dircache/dircache.c      |   2 +-
 src/feature/dircommon/fp_pair.c      |  12 +--
 src/feature/dircommon/fp_pair.h      |   4 +-
 src/lib/cc/compat_compiler.h         |  12 +--
 src/lib/container/handles.h          |  23 +++---
 src/lib/container/map.h              |  59 +++++++-------
 src/lib/crypt_ops/aes.h              |   2 +-
 src/lib/crypt_ops/aes_openssl.c      |   2 +-
 src/lib/crypt_ops/crypto_cipher.h    |   2 +-
 src/lib/crypt_ops/crypto_ope.h       |   6 +-
 src/lib/crypt_ops/crypto_rand_fast.c |  10 +--
 src/lib/evloop/compat_libevent.c     |   2 +-
 src/lib/evloop/compat_libevent.h     |   6 +-
 src/lib/evloop/timers.c              |   4 +-
 src/lib/evloop/workqueue.c           |  20 ++---
 src/lib/evloop/workqueue.h           |   6 +-
 src/lib/fs/storagedir.h              |   4 +-
 src/lib/math/prob_distr.c            | 152 ++++++++++++++++++-----------------
 src/lib/math/prob_distr.h            | 100 +++++++++++------------
 src/lib/sandbox/sandbox.h            |  10 +--
 src/lib/thread/threads.h             |   2 +-
 src/test/test-timers.c               |   2 +-
 src/test/test_consdiffmgr.c          |   4 +-
 src/test/test_dispatch.c             |   6 +-
 src/test/test_link_handshake.c       |   6 +-
 src/test/test_prob_distr.c           |  30 +++----
 src/test/test_threads.c              |   2 +-
 src/test/test_workqueue.c            |   8 +-
 src/test/testing_common.c            |   2 +-
 60 files changed, 349 insertions(+), 340 deletions(-)
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                     
                        
                    18 Nov '19
                    
                        commit 0c80c2e45fc6632908d2189f2c15e8b4b473f76b
Author: Nick Mathewson <nickm(a)torproject.org>
Date:   Sat Nov 16 15:19:33 2019 -0500
    handles.h: replace structname with structname_t
    
    This change makes our macro bodies consistent with our naming
    expectations for structs and types outside macro bodies.
---
 src/lib/container/handles.h | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/lib/container/handles.h b/src/lib/container/handles.h
index b6dcadb6b..798c8a367 100644
--- a/src/lib/container/handles.h
+++ b/src/lib/container/handles.h
@@ -57,12 +57,13 @@
 #define HANDLE_ENTRY(name, structname)         \
   struct name ## _handle_head_t *handle_head
 
-#define HANDLE_DECL(name, structname, linkage)                          \
+#define HANDLE_DECL(name, structname_t, linkage)                        \
   typedef struct name ## _handle_t name ## _handle_t;                   \
-  linkage  name ## _handle_t *name ## _handle_new(struct structname *object); \
+  linkage name ## _handle_t *name ## _handle_new(                       \
+                                          struct structname_t *object); \
   linkage void name ## _handle_free_(name ## _handle_t *);              \
-  linkage struct structname *name ## _handle_get(name ## _handle_t *);  \
-  linkage void name ## _handles_clear(struct structname *object);
+  linkage struct structname_t *name ## _handle_get(name ## _handle_t *); \
+  linkage void name ## _handles_clear(struct structname_t *object);
 
 /*
  * Implementation notes: there are lots of possible implementations here.  We
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                    
                    
                        commit cc271afedabb3e22bfde23292eb79744554b8005
Author: Nick Mathewson <nickm(a)torproject.org>
Date:   Sat Nov 16 15:19:33 2019 -0500
    map.h: replace maptype with mapname_t
    
    This change makes our macro bodies consistent with our naming
    expectations for structs and types outside macro bodies.
---
 src/lib/container/map.h | 59 +++++++++++++++++++++++++------------------------
 1 file changed, 30 insertions(+), 29 deletions(-)
diff --git a/src/lib/container/map.h b/src/lib/container/map.h
index 9da1d3072..35378a299 100644
--- a/src/lib/container/map.h
+++ b/src/lib/container/map.h
@@ -17,22 +17,23 @@
 
 #include "ext/siphash.h"
 
-#define DECLARE_MAP_FNS(maptype, keytype, prefix)                       \
-  typedef struct maptype maptype;                                       \
+#define DECLARE_MAP_FNS(mapname_t, keytype, prefix)                     \
+  typedef struct mapname_t mapname_t;                                   \
   typedef struct prefix##entry_t *prefix##iter_t;                       \
-  MOCK_DECL(maptype*, prefix##new, (void));                             \
-  void* prefix##set(maptype *map, keytype key, void *val);              \
-  void* prefix##get(const maptype *map, keytype key);                   \
-  void* prefix##remove(maptype *map, keytype key);                      \
-  MOCK_DECL(void, prefix##free_, (maptype *map, void (*free_val)(void*))); \
-  int prefix##isempty(const maptype *map);                              \
-  int prefix##size(const maptype *map);                                 \
-  prefix##iter_t *prefix##iter_init(maptype *map);                      \
-  prefix##iter_t *prefix##iter_next(maptype *map, prefix##iter_t *iter); \
-  prefix##iter_t *prefix##iter_next_rmv(maptype *map, prefix##iter_t *iter); \
+  MOCK_DECL(mapname_t*, prefix##new, (void));                           \
+  void* prefix##set(mapname_t *map, keytype key, void *val);            \
+  void* prefix##get(const mapname_t *map, keytype key);                 \
+  void* prefix##remove(mapname_t *map, keytype key);                    \
+  MOCK_DECL(void, prefix##free_, (mapname_t *map, void (*free_val)(void*))); \
+  int prefix##isempty(const mapname_t *map);                            \
+  int prefix##size(const mapname_t *map);                               \
+  prefix##iter_t *prefix##iter_init(mapname_t *map);                    \
+  prefix##iter_t *prefix##iter_next(mapname_t *map, prefix##iter_t *iter); \
+  prefix##iter_t *prefix##iter_next_rmv(mapname_t *map,                 \
+                                        prefix##iter_t *iter);          \
   void prefix##iter_get(prefix##iter_t *iter, keytype *keyp, void **valp); \
   int prefix##iter_done(prefix##iter_t *iter);                          \
-  void prefix##assert_ok(const maptype *map)
+  void prefix##assert_ok(const mapname_t *map)
 
 /* Map from const char * to void *. Implemented with a hash table. */
 DECLARE_MAP_FNS(strmap_t, const char *, strmap_);
@@ -42,9 +43,9 @@ DECLARE_MAP_FNS(digestmap_t, const char *, digestmap_);
  * table. */
 DECLARE_MAP_FNS(digest256map_t, const uint8_t *, digest256map_);
 
-#define MAP_FREE_AND_NULL(maptype, map, fn)     \
+#define MAP_FREE_AND_NULL(mapname_t, map, fn)     \
   do {                                          \
-    maptype ## _free_((map), (fn));             \
+    mapname_t ## _free_((map), (fn));             \
     (map) = NULL;                               \
   } while (0)
 
@@ -183,62 +184,62 @@ void* strmap_set_lc(strmap_t *map, const char *key, void *val);
 void* strmap_get_lc(const strmap_t *map, const char *key);
 void* strmap_remove_lc(strmap_t *map, const char *key);
 
-#define DECLARE_TYPED_DIGESTMAP_FNS(prefix, maptype, valtype)           \
-  typedef struct maptype maptype;                                       \
+#define DECLARE_TYPED_DIGESTMAP_FNS(prefix, mapname_t, valtype)           \
+  typedef struct mapname_t mapname_t;                                   \
   typedef struct prefix##iter_t *prefix##iter_t;                        \
-  ATTR_UNUSED static inline maptype*                                    \
+  ATTR_UNUSED static inline mapname_t*                                  \
   prefix##new(void)                                                     \
   {                                                                     \
-    return (maptype*)digestmap_new();                                   \
+    return (mapname_t*)digestmap_new();                                 \
   }                                                                     \
   ATTR_UNUSED static inline digestmap_t*                                \
-  prefix##to_digestmap(maptype *map)                                    \
+  prefix##to_digestmap(mapname_t *map)                                  \
   {                                                                     \
     return (digestmap_t*)map;                                           \
   }                                                                     \
   ATTR_UNUSED static inline valtype*                                    \
-  prefix##get(maptype *map, const char *key)     \
+  prefix##get(mapname_t *map, const char *key)                          \
   {                                                                     \
     return (valtype*)digestmap_get((digestmap_t*)map, key);             \
   }                                                                     \
   ATTR_UNUSED static inline valtype*                                    \
-  prefix##set(maptype *map, const char *key, valtype *val)              \
+  prefix##set(mapname_t *map, const char *key, valtype *val)            \
   {                                                                     \
     return (valtype*)digestmap_set((digestmap_t*)map, key, val);        \
   }                                                                     \
   ATTR_UNUSED static inline valtype*                                    \
-  prefix##remove(maptype *map, const char *key)                         \
+  prefix##remove(mapname_t *map, const char *key)                       \
   {                                                                     \
     return (valtype*)digestmap_remove((digestmap_t*)map, key);          \
   }                                                                     \
   ATTR_UNUSED static inline void                                        \
-  prefix##f##ree_(maptype *map, void (*free_val)(void*))                \
+  prefix##f##ree_(mapname_t *map, void (*free_val)(void*))              \
   {                                                                     \
     digestmap_free_((digestmap_t*)map, free_val);                       \
   }                                                                     \
   ATTR_UNUSED static inline int                                         \
-  prefix##isempty(maptype *map)                                         \
+  prefix##isempty(mapname_t *map)                                       \
   {                                                                     \
     return digestmap_isempty((digestmap_t*)map);                        \
   }                                                                     \
   ATTR_UNUSED static inline int                                         \
-  prefix##size(maptype *map)                                            \
+  prefix##size(mapname_t *map)                                          \
   {                                                                     \
     return digestmap_size((digestmap_t*)map);                           \
   }                                                                     \
   ATTR_UNUSED static inline                                             \
-  prefix##iter_t *prefix##iter_init(maptype *map)                       \
+  prefix##iter_t *prefix##iter_init(mapname_t *map)                     \
   {                                                                     \
     return (prefix##iter_t*) digestmap_iter_init((digestmap_t*)map);    \
   }                                                                     \
   ATTR_UNUSED static inline                                             \
-  prefix##iter_t *prefix##iter_next(maptype *map, prefix##iter_t *iter) \
+  prefix##iter_t *prefix##iter_next(mapname_t *map, prefix##iter_t *iter) \
   {                                                                     \
     return (prefix##iter_t*) digestmap_iter_next(                       \
                        (digestmap_t*)map, (digestmap_iter_t*)iter);     \
   }                                                                     \
   ATTR_UNUSED static inline prefix##iter_t*                             \
-  prefix##iter_next_rmv(maptype *map, prefix##iter_t *iter)             \
+  prefix##iter_next_rmv(mapname_t *map, prefix##iter_t *iter)           \
   {                                                                     \
     return (prefix##iter_t*) digestmap_iter_next_rmv(                   \
                        (digestmap_t*)map, (digestmap_iter_t*)iter);     \
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                     
                        
                    
                        
                            
                                
                            
                            [tor/master] Make structs declared by tor_queues.h macros also follow naming rules
                        
                        
by teor@torproject.org 18 Nov '19
                    by teor@torproject.org 18 Nov '19
18 Nov '19
                    
                        commit 59ba61a69050edacb560a9fa6ad302346e14095e
Author: Nick Mathewson <nickm(a)torproject.org>
Date:   Sat Nov 16 15:27:08 2019 -0500
    Make structs declared by tor_queues.h macros also follow naming rules
---
 src/core/or/cell_queue_st.h         | 2 +-
 src/core/or/channel.c               | 4 ++--
 src/core/or/destroy_cell_queue_st.h | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/core/or/cell_queue_st.h b/src/core/or/cell_queue_st.h
index 763bc5bc1..7befd2e83 100644
--- a/src/core/or/cell_queue_st.h
+++ b/src/core/or/cell_queue_st.h
@@ -27,7 +27,7 @@ struct packed_cell_t {
  * or_connection_t's outbuf. */
 struct cell_queue_t {
   /** Linked list of packed_cell_t*/
-  TOR_SIMPLEQ_HEAD(cell_simpleq, packed_cell_t) head;
+  TOR_SIMPLEQ_HEAD(cell_simpleq_t, packed_cell_t) head;
   int n; /**< The number of cells in the queue. */
 };
 
diff --git a/src/core/or/channel.c b/src/core/or/channel.c
index 31a33325f..1641a9680 100644
--- a/src/core/or/channel.c
+++ b/src/core/or/channel.c
@@ -143,7 +143,7 @@ static HT_HEAD(channel_idmap, channel_idmap_entry_t) channel_identity_map =
 typedef struct channel_idmap_entry_t {
   HT_ENTRY(channel_idmap_entry_t) node;
   uint8_t digest[DIGEST_LEN];
-  TOR_LIST_HEAD(channel_list_s, channel_t) channel_list;
+  TOR_LIST_HEAD(channel_list_t, channel_t) channel_list;
 } channel_idmap_entry_t;
 
 static inline unsigned
@@ -3406,7 +3406,7 @@ channel_sort_by_ed25519_identity(const void **a_, const void **b_)
  * all of which MUST have the same RSA ID.  (They MAY have different
  * Ed25519 IDs.) */
 static void
-channel_rsa_id_group_set_badness(struct channel_list_s *lst, int force)
+channel_rsa_id_group_set_badness(struct channel_list_t *lst, int force)
 {
   /*XXXX This function should really be about channels. 15056 */
   channel_t *chan = TOR_LIST_FIRST(lst);
diff --git a/src/core/or/destroy_cell_queue_st.h b/src/core/or/destroy_cell_queue_st.h
index 3c4df050c..3b019ab1c 100644
--- a/src/core/or/destroy_cell_queue_st.h
+++ b/src/core/or/destroy_cell_queue_st.h
@@ -26,7 +26,7 @@ struct destroy_cell_t {
 /** A queue of destroy cells on a channel. */
 struct destroy_cell_queue_t {
   /** Linked list of packed_cell_t */
-  TOR_SIMPLEQ_HEAD(dcell_simpleq, destroy_cell_t) head;
+  TOR_SIMPLEQ_HEAD(dcell_simpleq_t, destroy_cell_t) head;
   int n; /**< The number of cells in the queue. */
 };
 
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                     
                        
                    18 Nov '19
                    
                        commit 54f87d304461502675048842ec91382f61a4f411
Author: Damian Johnson <atagar(a)torproject.org>
Date:   Sun Nov 17 16:13:21 2019 -0800
    Drop flaky test_query_with_timeout assertion
    
    Jenkins has long struggled with this assertion, and I see these failures
    locally from time to time too...
    
      ======================================================================
      FAIL: test_query_with_timeout
      ----------------------------------------------------------------------
      Traceback (most recent call last):
        File "/usr/local/lib/python2.7/dist-packages/mock/mock.py", line 1305, in patched
          return func(*args, **keywargs)
        File "/home/atagar/Desktop/stem/test/unit/descriptor/remote.py", line 387, in test_query_with_timeout
          self.assertEqual(2, dirport_mock.call_count)
      AssertionError: 2 != 3
    
      ----------------------------------------------------------------------
    
    No assertion is better than a flaky one, so dropping this last bit.
---
 test/unit/descriptor/remote.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/test/unit/descriptor/remote.py b/test/unit/descriptor/remote.py
index 8a35216d..ab0ad3d7 100644
--- a/test/unit/descriptor/remote.py
+++ b/test/unit/descriptor/remote.py
@@ -381,10 +381,10 @@ class TestDescriptorDownloader(unittest.TestCase):
     )
 
     # After two requests we'll have reached our total permissable timeout.
-    # Check that we don't make a third.
+    # It would be nice to check that we don't make a third, but this
+    # assertion has proved unreliable so only checking for the exception.
 
     self.assertRaises(stem.DownloadTimeout, query.run)
-    self.assertEqual(2, dirport_mock.call_count)
 
   def test_query_with_invalid_endpoints(self):
     invalid_endpoints = {
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                    
                    
                        commit 95531abf2b88f97f881b73f61c037a21390388cd
Author: Damian Johnson <atagar(a)torproject.org>
Date:   Sun Nov 17 16:00:34 2019 -0800
    Fix x25519_supported AttributeError
    
    Oops, turns out the cryptography module doesn't always supply this method...
    
      Traceback (most recent call last):
        File "./run_tests.py", line 36, in <module>
          import test.runner
        File "/srv/jenkins-workspace/workspace/stem-tor-ci/test/runner.py", line 44, in <module>
          import stem.connection
        File "/srv/jenkins-workspace/workspace/stem-tor-ci/stem/connection.py", line 136, in <module>
          import stem.control
        File "/srv/jenkins-workspace/workspace/stem-tor-ci/stem/control.py", line 271, in <module>
          import stem.descriptor.microdescriptor
        File "/srv/jenkins-workspace/workspace/stem-tor-ci/stem/descriptor/__init__.py", line 1544, in <module>
          import stem.descriptor.hidden_service
        File "/srv/jenkins-workspace/workspace/stem-tor-ci/stem/descriptor/hidden_service.py", line 81, in <module>
          X25519_AVAILABLE = backend.x25519_supported()
      AttributeError: 'Backend' object has no attribute 'x25519_supported'
---
 stem/descriptor/hidden_service.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/stem/descriptor/hidden_service.py b/stem/descriptor/hidden_service.py
index 3ad2f031..0e710e7a 100644
--- a/stem/descriptor/hidden_service.py
+++ b/stem/descriptor/hidden_service.py
@@ -78,7 +78,7 @@ else:
 
 try:
   from cryptography.hazmat.backends.openssl.backend import backend
-  X25519_AVAILABLE = backend.x25519_supported()
+  X25519_AVAILABLE = hasattr(backend, 'x25519_supported') and backend.x25519_supported()
 except ImportError:
   X25519_AVAILABLE = False
 
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0