diff options
author | teor (Tim Wilson-Brown) <teor2345@gmail.com> | 2015-11-16 23:02:49 +1100 |
---|---|---|
committer | teor (Tim Wilson-Brown) <teor2345@gmail.com> | 2015-11-20 10:39:37 +1100 |
commit | 6913bdfcc568e880873e92331a3182536c3e653e (patch) | |
tree | 03008791d84c0e79bd309fbed221884dcd285918 /src/or/router.c | |
parent | 10dd592d74b638f4643522dfe6e81f03e4acb06e (diff) | |
download | tor-6913bdfcc568e880873e92331a3182536c3e653e.tar.gz tor-6913bdfcc568e880873e92331a3182536c3e653e.zip |
Refactor router_dump_exit_policy_to_string
Split out policy_dump_to_string to use it in getinfo_helper_policies.
Diffstat (limited to 'src/or/router.c')
-rw-r--r-- | src/or/router.c | 37 |
1 files changed, 3 insertions, 34 deletions
diff --git a/src/or/router.c b/src/or/router.c index 95e5ad8c30..90203458b2 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -2728,44 +2728,13 @@ router_dump_exit_policy_to_string(const routerinfo_t *router, int include_ipv4, int include_ipv6) { - smartlist_t *exit_policy_strings; - char *policy_string = NULL; - if ((!router->exit_policy) || (router->policy_is_reject_star)) { return tor_strdup("reject *:*"); } - exit_policy_strings = smartlist_new(); - - SMARTLIST_FOREACH_BEGIN(router->exit_policy, addr_policy_t *, tmpe) { - char *pbuf; - int bytes_written_to_pbuf; - if ((tor_addr_family(&tmpe->addr) == AF_INET6) && (!include_ipv6)) { - continue; /* Don't include IPv6 parts of address policy */ - } - if ((tor_addr_family(&tmpe->addr) == AF_INET) && (!include_ipv4)) { - continue; /* Don't include IPv4 parts of address policy */ - } - - pbuf = tor_malloc(POLICY_BUF_LEN); - bytes_written_to_pbuf = policy_write_item(pbuf,POLICY_BUF_LEN, tmpe, 1); - - if (bytes_written_to_pbuf < 0) { - log_warn(LD_BUG, "router_dump_exit_policy_to_string ran out of room!"); - tor_free(pbuf); - goto done; - } - - smartlist_add(exit_policy_strings,pbuf); - } SMARTLIST_FOREACH_END(tmpe); - - policy_string = smartlist_join_strings(exit_policy_strings, "\n", 0, NULL); - - done: - SMARTLIST_FOREACH(exit_policy_strings, char *, str, tor_free(str)); - smartlist_free(exit_policy_strings); - - return policy_string; + return policy_dump_to_string(router->exit_policy, + include_ipv4, + include_ipv6); } /** Copy the primary (IPv4) OR port (IP address and TCP port) for |