|
@@ -1510,21 +1510,25 @@ test_policies_fascist_firewall_choose_address(void *arg)
|
|
|
FIREWALL_DIR_CONNECTION, 1)
|
|
|
== &ipv4_dir_ap);
|
|
|
|
|
|
- /* Auto (Preferring IPv6 for bridge clients) */
|
|
|
+ /* Auto:
|
|
|
+ * - bridge clients prefer the configured bridge OR address,
|
|
|
+ * - other clients prefer IPv4 OR by default,
|
|
|
+ * - all clients prefer IPv4 Dir by default.
|
|
|
+ */
|
|
|
mock_options.ClientPreferIPv6ORPort = -1;
|
|
|
mock_options.ClientPreferIPv6DirPort = -1;
|
|
|
tt_assert(fascist_firewall_choose_address(&ipv4_or_ap, &ipv6_or_ap, 0,
|
|
|
FIREWALL_OR_CONNECTION, 0)
|
|
|
- == &ipv6_or_ap);
|
|
|
+ == &ipv4_or_ap);
|
|
|
tt_assert(fascist_firewall_choose_address(&ipv4_or_ap, &ipv6_or_ap, 0,
|
|
|
FIREWALL_OR_CONNECTION, 1)
|
|
|
- == &ipv6_or_ap);
|
|
|
+ == &ipv4_or_ap);
|
|
|
tt_assert(fascist_firewall_choose_address(&ipv4_dir_ap, &ipv6_dir_ap, 0,
|
|
|
FIREWALL_DIR_CONNECTION, 0)
|
|
|
- == &ipv6_dir_ap);
|
|
|
+ == &ipv4_dir_ap);
|
|
|
tt_assert(fascist_firewall_choose_address(&ipv4_dir_ap, &ipv6_dir_ap, 0,
|
|
|
FIREWALL_DIR_CONNECTION, 1)
|
|
|
- == &ipv6_dir_ap);
|
|
|
+ == &ipv4_dir_ap);
|
|
|
|
|
|
/* Preferring IPv6 */
|
|
|
mock_options.ClientPreferIPv6ORPort = 1;
|
|
@@ -1544,22 +1548,23 @@ test_policies_fascist_firewall_choose_address(void *arg)
|
|
|
|
|
|
|
|
|
/* In the default configuration (Auto / IPv6 off), bridge clients should
|
|
|
- * still use and prefer IPv6 regardless of ClientUseIPv6. */
|
|
|
+ * still use IPv6, and only prefer it for bridges configured with an IPv6
|
|
|
+ * address, regardless of ClientUseIPv6. */
|
|
|
mock_options.ClientUseIPv6 = 0;
|
|
|
mock_options.ClientPreferIPv6ORPort = -1;
|
|
|
mock_options.ClientPreferIPv6DirPort = -1;
|
|
|
tt_assert(fascist_firewall_choose_address(&ipv4_or_ap, &ipv6_or_ap, 0,
|
|
|
FIREWALL_OR_CONNECTION, 0)
|
|
|
- == &ipv6_or_ap);
|
|
|
+ == &ipv4_or_ap);
|
|
|
tt_assert(fascist_firewall_choose_address(&ipv4_or_ap, &ipv6_or_ap, 0,
|
|
|
FIREWALL_OR_CONNECTION, 1)
|
|
|
- == &ipv6_or_ap);
|
|
|
+ == &ipv4_or_ap);
|
|
|
tt_assert(fascist_firewall_choose_address(&ipv4_dir_ap, &ipv6_dir_ap, 0,
|
|
|
FIREWALL_DIR_CONNECTION, 0)
|
|
|
- == &ipv6_dir_ap);
|
|
|
+ == &ipv4_dir_ap);
|
|
|
tt_assert(fascist_firewall_choose_address(&ipv4_dir_ap, &ipv6_dir_ap, 0,
|
|
|
FIREWALL_DIR_CONNECTION, 1)
|
|
|
- == &ipv6_dir_ap);
|
|
|
+ == &ipv4_dir_ap);
|
|
|
|
|
|
/* Choose an address with IPv4 on */
|
|
|
memset(&mock_options, 0, sizeof(or_options_t));
|