mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 22:58:50 +01:00
Add tests for get_first_advertised_{addr,port}_by_type_af()
This commit is contained in:
parent
bac8bc0ff1
commit
6ffe073db7
3 changed files with 71 additions and 4 deletions
|
@ -809,9 +809,6 @@ static int normalize_nickname_list(config_line_t **normalized_out,
|
|||
char **msg);
|
||||
static char *get_bindaddr_from_transport_listen_line(const char *line,
|
||||
const char *transport);
|
||||
static int parse_ports(or_options_t *options, int validate_only,
|
||||
char **msg_out, int *n_ports_out,
|
||||
int *world_writable_control_socket);
|
||||
static int check_server_ports(const smartlist_t *ports,
|
||||
const or_options_t *options,
|
||||
int *num_low_ports_out);
|
||||
|
@ -7370,7 +7367,7 @@ count_real_listeners(const smartlist_t *ports, int listenertype,
|
|||
* If <b>validate_only</b> is false, set configured_client_ports to the
|
||||
* new list of ports parsed from <b>options</b>.
|
||||
**/
|
||||
static int
|
||||
STATIC int
|
||||
parse_ports(or_options_t *options, int validate_only,
|
||||
char **msg, int *n_ports_out,
|
||||
int *world_writable_control_socket)
|
||||
|
|
|
@ -295,6 +295,10 @@ STATIC int open_and_add_file_log(const log_severity_list_t *severity,
|
|||
const char *fname,
|
||||
int truncate_log);
|
||||
|
||||
STATIC int parse_ports(or_options_t *options, int validate_only,
|
||||
char **msg, int *n_ports_out,
|
||||
int *world_writable_control_socket);
|
||||
|
||||
#endif /* defined(CONFIG_PRIVATE) */
|
||||
|
||||
#endif /* !defined(TOR_CONFIG_H) */
|
||||
|
|
|
@ -4860,6 +4860,71 @@ test_config_parse_port_config__ports__server_options(void *data)
|
|||
config_free_lines(config_port_valid); config_port_valid = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
test_config_get_first_advertised(void *data)
|
||||
{
|
||||
(void)data;
|
||||
int r, w=0, n=0;
|
||||
char *msg=NULL;
|
||||
or_options_t *opts = options_new();
|
||||
int port;
|
||||
const tor_addr_t *addr;
|
||||
|
||||
// no ports are configured? We get NULL.
|
||||
port = get_first_advertised_port_by_type_af(CONN_TYPE_OR_LISTENER,
|
||||
AF_INET);
|
||||
tt_int_op(port, OP_EQ, 0);
|
||||
addr = get_first_advertised_addr_by_type_af(CONN_TYPE_OR_LISTENER,
|
||||
AF_INET);
|
||||
tt_ptr_op(addr, OP_EQ, NULL);
|
||||
|
||||
port = get_first_advertised_port_by_type_af(CONN_TYPE_OR_LISTENER,
|
||||
AF_INET6);
|
||||
tt_int_op(port, OP_EQ, 0);
|
||||
addr = get_first_advertised_addr_by_type_af(CONN_TYPE_OR_LISTENER,
|
||||
AF_INET6);
|
||||
tt_ptr_op(addr, OP_EQ, NULL);
|
||||
|
||||
config_line_append(&opts->ORPort_lines, "ORPort", "[1234::5678]:8080");
|
||||
config_line_append(&opts->ORPort_lines, "ORPort",
|
||||
"1.2.3.4:9999 noadvertise");
|
||||
config_line_append(&opts->ORPort_lines, "ORPort",
|
||||
"5.6.7.8:9911 nolisten");
|
||||
|
||||
r = parse_ports(opts, 0, &msg, &n, &w);
|
||||
tt_assert(r == 0);
|
||||
|
||||
// UNSPEC gets us nothing.
|
||||
port = get_first_advertised_port_by_type_af(CONN_TYPE_OR_LISTENER,
|
||||
AF_UNSPEC);
|
||||
tt_int_op(port, OP_EQ, 0);
|
||||
addr = get_first_advertised_addr_by_type_af(CONN_TYPE_OR_LISTENER,
|
||||
AF_UNSPEC);
|
||||
tt_ptr_op(addr, OP_EQ, NULL);
|
||||
|
||||
// Try AF_INET.
|
||||
port = get_first_advertised_port_by_type_af(CONN_TYPE_OR_LISTENER,
|
||||
AF_INET);
|
||||
tt_int_op(port, OP_EQ, 9911);
|
||||
addr = get_first_advertised_addr_by_type_af(CONN_TYPE_OR_LISTENER,
|
||||
AF_INET);
|
||||
tt_ptr_op(addr, OP_NE, NULL);
|
||||
tt_str_op(fmt_addrport(addr,port), OP_EQ, "5.6.7.8:9911");
|
||||
|
||||
// Try AF_INET6
|
||||
port = get_first_advertised_port_by_type_af(CONN_TYPE_OR_LISTENER,
|
||||
AF_INET6);
|
||||
tt_int_op(port, OP_EQ, 8080);
|
||||
addr = get_first_advertised_addr_by_type_af(CONN_TYPE_OR_LISTENER,
|
||||
AF_INET6);
|
||||
tt_ptr_op(addr, OP_NE, NULL);
|
||||
tt_str_op(fmt_addrport(addr,port), OP_EQ, "[1234::5678]:8080");
|
||||
|
||||
done:
|
||||
or_options_free(opts);
|
||||
config_free_all();
|
||||
}
|
||||
|
||||
static void
|
||||
test_config_parse_log_severity(void *data)
|
||||
{
|
||||
|
@ -5920,6 +5985,7 @@ struct testcase_t config_tests[] = {
|
|||
CONFIG_TEST(parse_port_config__ports__no_ports_given, 0),
|
||||
CONFIG_TEST(parse_port_config__ports__server_options, 0),
|
||||
CONFIG_TEST(parse_port_config__ports__ports_given, 0),
|
||||
CONFIG_TEST(get_first_advertised, TT_FORK),
|
||||
CONFIG_TEST(parse_log_severity, 0),
|
||||
CONFIG_TEST(include_limit, 0),
|
||||
CONFIG_TEST(include_does_not_exist, 0),
|
||||
|
|
Loading…
Add table
Reference in a new issue