[tor-commits] [tor/master] Add firewall_is_fascist_dir()

nickm at torproject.org nickm at torproject.org
Thu Feb 11 17:37:18 UTC 2016


commit e991d642ec14d41df9da70442d99861bdb5bfb5b
Author: teor (Tim Wilson-Brown) <teor2345 at gmail.com>
Date:   Thu Jan 21 12:58:59 2016 +1100

    Add firewall_is_fascist_dir()
    
    Refactor common parts of firewall_is_fascist_or().
---
 src/or/policies.c | 32 +++++++++++++++++++++++++-------
 src/or/policies.h |  1 +
 2 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/src/or/policies.c b/src/or/policies.c
index ecc89da..506edec 100644
--- a/src/or/policies.c
+++ b/src/or/policies.c
@@ -307,18 +307,36 @@ parse_reachable_addresses(void)
   return ret;
 }
 
-/** Return true iff the firewall options, including ClientUseIPv4 0 and
- * ClientUseIPv6 0, might block any address:port combination.
- */
-int
-firewall_is_fascist_or(void)
+/* Return true iff ClientUseIPv4 0 or ClientUseIPv6 0 might block any OR or Dir
+ * address:port combination. */
+static int
+firewall_is_fascist_impl(void)
 {
   const or_options_t *options = get_options();
   /* Assume every non-bridge relay has an IPv4 address.
    * Clients which use bridges may only know the IPv6 address of their
    * bridge. */
-  return (reachable_or_addr_policy != NULL || options->ClientUseIPv4 == 0
-          || (options->ClientUseIPv6 == 0 && options->UseBridges == 1));
+  return (options->ClientUseIPv4 == 0
+          || (!fascist_firewall_use_ipv6(options)
+              && options->UseBridges == 1));
+}
+
+/** Return true iff the firewall options, including ClientUseIPv4 0 and
+ * ClientUseIPv6 0, might block any OR address:port combination.
+ */
+int
+firewall_is_fascist_or(void)
+{
+  return (reachable_or_addr_policy != NULL || firewall_is_fascist_impl());
+}
+
+/** Return true iff the firewall options, including ClientUseIPv4 0 and
+ * ClientUseIPv6 0, might block any Dir address:port combination.
+ */
+int
+firewall_is_fascist_dir(void)
+{
+  return (reachable_dir_addr_policy != NULL || firewall_is_fascist_impl());
 }
 
 /** Return true iff <b>policy</b> (possibly NULL) will allow a
diff --git a/src/or/policies.h b/src/or/policies.h
index ac4f7ea..65f10e2 100644
--- a/src/or/policies.h
+++ b/src/or/policies.h
@@ -30,6 +30,7 @@ typedef enum firewall_connection_t {
 typedef int exit_policy_parser_cfg_t;
 
 int firewall_is_fascist_or(void);
+int firewall_is_fascist_dir(void);
 int fascist_firewall_use_ipv6(const or_options_t *options);
 int fascist_firewall_prefer_ipv6_orport(const or_options_t *options);
 int fascist_firewall_prefer_ipv6_dirport(const or_options_t *options);





More information about the tor-commits mailing list