aboutsummaryrefslogtreecommitdiff
path: root/src/or
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2007-10-12 21:33:37 +0000
committerNick Mathewson <nickm@torproject.org>2007-10-12 21:33:37 +0000
commit783402f63a38ab02acbb9321ca54ef9bd2f43f22 (patch)
treecdb57c12d92612559a9083af86fb263dc8df484e /src/or
parenta009014eb35bd679dab2c3087285e1734e5772e4 (diff)
downloadtor-783402f63a38ab02acbb9321ca54ef9bd2f43f22.tar
tor-783402f63a38ab02acbb9321ca54ef9bd2f43f22.tar.gz
r15731@catbus: nickm | 2007-10-12 17:27:48 -0400
Move "sort a list of routerinfo_t" into its own function in routerlist.c svn:r11903
Diffstat (limited to 'src/or')
-rw-r--r--src/or/dirserv.c19
-rw-r--r--src/or/routerlist.c18
2 files changed, 23 insertions, 14 deletions
diff --git a/src/or/dirserv.c b/src/or/dirserv.c
index d2e0d5e42..addb3f4fc 100644
--- a/src/or/dirserv.c
+++ b/src/or/dirserv.c
@@ -1695,17 +1695,6 @@ routerstatus_format_entry(char *buf, size_t buf_len,
return 0;
}
-/** Helper for sorting: compare two routerinfos by their identity
- * digest. */
-static int
-_compare_routerinfo_by_id_digest(const void **a, const void **b)
-{
- routerinfo_t *first = *(routerinfo_t **)a, *second = *(routerinfo_t **)b;
- return memcmp(first->cache_info.identity_digest,
- second->cache_info.identity_digest,
- DIGEST_LEN);
-}
-
/** Helper for sorting: compares two routerinfos first by address, and then by
* descending order of "usefulness". (An authority is more useful than a
* non-authority; a running router is more useful than a non-running router;
@@ -1754,7 +1743,9 @@ _compare_routerinfo_by_ip_and_bw(const void **a, const void **b)
/* They're equal! Compare by identity digest, so there's a
* deterministic order and we avoid flapping. */
- return _compare_routerinfo_by_id_digest(a, b);
+ return memcmp(first->cache_info.identity_digest,
+ second->cache_info.identity_digest,
+ DIGEST_LEN);
}
/** Given a list of routerinfo_t in <b>routers</b>, return a new digestmap_t
@@ -1913,7 +1904,7 @@ generate_networkstatus_vote_obj(crypto_pk_env_t *private_key,
routers = smartlist_create();
smartlist_add_all(routers, rl->routers);
- smartlist_sort(routers, _compare_routerinfo_by_id_digest);
+ routers_sort_by_identity(routers);
omit_as_sybil = get_possible_sybil_list(routers);
routerstatuses = smartlist_create();
@@ -2337,7 +2328,7 @@ generate_networkstatus_opinion(int v2)
routers = smartlist_create();
smartlist_add_all(routers, rl->routers);
- smartlist_sort(routers, _compare_routerinfo_by_id_digest);
+ routers_sort_by_identity(routers);
omit_as_sybil = get_possible_sybil_list(routers);
diff --git a/src/or/routerlist.c b/src/or/routerlist.c
index c974adb0f..d4e692cad 100644
--- a/src/or/routerlist.c
+++ b/src/or/routerlist.c
@@ -4403,3 +4403,21 @@ esc_router_info(routerinfo_t *router)
return info;
}
+/** Helper for sorting: compare two routerinfos by their identity
+ * digest. */
+static int
+_compare_routerinfo_by_id_digest(const void **a, const void **b)
+{
+ routerinfo_t *first = *(routerinfo_t **)a, *second = *(routerinfo_t **)b;
+ return memcmp(first->cache_info.identity_digest,
+ second->cache_info.identity_digest,
+ DIGEST_LEN);
+}
+
+/** Sort a list of routerinfo_t in ascending order of identity digest. */
+void
+routers_sort_by_identity(smartlist_t *routers)
+{
+ smartlist_sort(routers, _compare_routerinfo_by_id_digest);
+}
+