瀏覽代碼

Log bandwidth_weight_rule_t as a string, not an integer.

I'm adding this because I can never remember what stuff like 'rule 3'
means.  That's the one where if somebody goes limp or taps out, the
fight is over, right?
Nick Mathewson 14 年之前
父節點
當前提交
311aca5a34
共有 3 個文件被更改,包括 34 次插入8 次删除
  1. 4 1
      src/or/or.h
  2. 21 0
      src/or/reasons.c
  3. 9 7
      src/or/routerlist.c

+ 4 - 1
src/or/or.h

@@ -4493,6 +4493,9 @@ const char *circuit_end_reason_to_control_string(int reason);
 const char *socks4_response_code_to_string(uint8_t code);
 const char *socks5_response_code_to_string(uint8_t code);
 
+enum bandwidth_weight_rule_t;
+const char *bandwidth_weight_rule_to_string(enum bandwidth_weight_rule_t rule);
+
 /********************************* relay.c ***************************/
 
 extern uint64_t stats_n_relay_cells_relayed;
@@ -4963,7 +4966,7 @@ uint32_t router_get_advertised_bandwidth_capped(routerinfo_t *router);
 
 /** Possible ways to weight routers when choosing one randomly.  See
  * routerlist_sl_choose_by_bandwidth() for more information.*/
-typedef enum {
+typedef enum bandwidth_weight_rule_t {
   NO_WEIGHTING, WEIGHT_FOR_EXIT, WEIGHT_FOR_MID, WEIGHT_FOR_GUARD,
   WEIGHT_FOR_DIR
 } bandwidth_weight_rule_t;

+ 21 - 0
src/or/reasons.c

@@ -372,3 +372,24 @@ socks5_response_code_to_string(uint8_t code)
   }
 }
 
+/** Return a string corresponding to a bandwidht_weight_rule_t */
+const char *
+bandwidth_weight_rule_to_string(bandwidth_weight_rule_t rule)
+{
+  switch (rule)
+    {
+    case NO_WEIGHTING:
+      return "no weighting";
+    case WEIGHT_FOR_EXIT:
+      return "weight as exit";
+    case WEIGHT_FOR_MID:
+      return "weight as middle node";
+    case WEIGHT_FOR_GUARD:
+      return "weight as guard";
+    case WEIGHT_FOR_DIR:
+      return "weight as directory";
+    default:
+      return "unknown rule";
+  }
+}
+

+ 9 - 7
src/or/routerlist.c

@@ -1577,7 +1577,8 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl,
   if (smartlist_len(sl) == 0) {
     log_info(LD_CIRC,
              "Empty routerlist passed in to consensus weight node "
-             "selection for rule %d", rule);
+             "selection for rule %s",
+             bandwidth_weight_rule_to_string(rule));
     return NULL;
   }
 
@@ -1695,15 +1696,16 @@ smartlist_choose_by_bandwidth_weights(smartlist_t *sl,
     weighted_bw += weight*this_bw;
   }
 
-  log_debug(LD_CIRC, "Choosing node for rule %d based on weights "
-            "Wg=%lf Wm=%lf We=%lf Wd=%lf with total bw %lf", rule,
+  log_debug(LD_CIRC, "Choosing node for rule %s based on weights "
+            "Wg=%lf Wm=%lf We=%lf Wd=%lf with total bw %lf",
+            bandwidth_weight_rule_to_string(rule),
             Wg, Wm, We, Wd, weighted_bw);
 
   /* If there is no bandwidth, choose at random */
   if (DBL_TO_U64(weighted_bw) == 0) {
     log_warn(LD_CIRC,
-             "Weighted bandwidth is %lf in node selection for rule %d",
-             weighted_bw, rule);
+             "Weighted bandwidth is %lf in node selection for rule %s",
+             weighted_bw, bandwidth_weight_rule_to_string(rule));
     tor_free(bandwidths);
     return smartlist_choose(sl);
   }
@@ -1783,8 +1785,8 @@ smartlist_choose_by_bandwidth(smartlist_t *sl, bandwidth_weight_rule_t rule,
 
   if (smartlist_len(sl) == 0) {
     log_info(LD_CIRC,
-             "Empty routerlist passed in to old node selection for rule %d",
-             rule);
+             "Empty routerlist passed in to old node selection for rule %s",
+             bandwidth_weight_rule_to_string(rule));
     return NULL;
   }