[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r16536: {tor} Add exit policy and bw to dirvotes - unfortunately also to v (tor/trunk/src/or)
Author: weasel
Date: 2008-08-14 08:37:00 -0400 (Thu, 14 Aug 2008)
New Revision: 16536
Modified:
tor/trunk/src/or/dirserv.c
tor/trunk/src/or/routerlist.c
Log:
Add exit policy and bw to dirvotes - unfortunately also to v2 statuses
Modified: tor/trunk/src/or/dirserv.c
===================================================================
--- tor/trunk/src/or/dirserv.c 2008-08-14 11:24:03 UTC (rev 16535)
+++ tor/trunk/src/or/dirserv.c 2008-08-14 12:37:00 UTC (rev 16536)
@@ -1866,12 +1866,28 @@
int r;
struct in_addr in;
char *cp;
+ char *summary;
char published[ISO_TIME_LEN+1];
char ipaddr[INET_NTOA_BUF_LEN];
char identity64[BASE64_DIGEST_LEN+1];
char digest64[BASE64_DIGEST_LEN+1];
+ routerinfo_t* desc = router_get_by_digest(rs->identity_digest);
+ if (!desc) {
+ char id[HEX_DIGEST_LEN+1];
+ char dd[HEX_DIGEST_LEN+1];
+
+ base16_encode(id, sizeof(id), rs->identity_digest, DIGEST_LEN);
+ base16_encode(dd, sizeof(dd), rs->descriptor_digest, DIGEST_LEN);
+ log_warn(LD_BUG, "Cannot get the descriptor with digest %s for %s.",
+ id, dd);
+ return -1;
+ };
+ tor_assert(!memcmp(desc->cache_info.signed_descriptor_digest,
+ rs->descriptor_digest,
+ DIGEST_LEN));
+
format_iso_time(published, rs->published_on);
digest_to_base64(identity64, rs->identity_digest);
digest_to_base64(digest64, rs->descriptor_digest);
@@ -1896,7 +1912,8 @@
cp = buf + strlen(buf);
/* NOTE: Whenever this list expands, be sure to increase MAX_FLAG_LINE_LEN*/
r = tor_snprintf(cp, buf_len - (cp-buf),
- "s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
+ "s%s%s%s%s%s%s%s%s%s%s%s%s%s\n"
+ "w Bandwidth=%d\n",
/* These must stay in alphabetical order. */
rs->is_authority?" Authority":"",
rs->is_bad_directory?" BadDirectory":"",
@@ -1910,7 +1927,8 @@
rs->is_stable?" Stable":"",
rs->is_unnamed?" Unnamed":"",
rs->is_v2_dir?" V2Dir":"",
- rs->is_valid?" Valid":"");
+ rs->is_valid?" Valid":"",
+ router_get_advertised_bandwidth_capped(desc));
if (r<0) {
log_warn(LD_BUG, "Not enough space in buffer.");
return -1;
@@ -1926,6 +1944,16 @@
}
}
+ summary = policy_summarize(desc->exit_policy);
+ if (summary) {
+ r = tor_snprintf(cp, buf_len - (cp-buf), "p %s\n", summary);
+ if (r<0) {
+ log_warn(LD_BUG, "Not enough space in buffer.");
+ return -1;
+ }
+ tor_free(summary);
+ }
+
return 0;
}
Modified: tor/trunk/src/or/routerlist.c
===================================================================
--- tor/trunk/src/or/routerlist.c 2008-08-14 11:24:03 UTC (rev 16535)
+++ tor/trunk/src/or/routerlist.c 2008-08-14 12:37:00 UTC (rev 16536)
@@ -1431,6 +1431,19 @@
* routers by bandwidth. */
#define DEFAULT_MAX_BELIEVABLE_BANDWIDTH 10000000 /* 10 MB/sec */
+/** Return the smaller of the router's configured BandwidthRate
+ * and its advertised capacity, capped by max-believe-bw. */
+uint32_t
+router_get_advertised_bandwidth_capped(routerinfo_t *router)
+{
+ uint32_t result = router->bandwidthcapacity;
+ if (result > router->bandwidthrate)
+ result = router->bandwidthrate;
+ if (result > DEFAULT_MAX_BELIEVABLE_BANDWIDTH)
+ result = DEFAULT_MAX_BELIEVABLE_BANDWIDTH;
+ return result;
+}
+
/** Eventually, the number we return will come from the directory
* consensus, so clients can dynamically update to better numbers.
*