Commit Graph

29 Commits

Author SHA1 Message Date
David Goulet 15860c8846 addr: Use tor_addr_t instead of uint32_t for IPv4
This changes a LOT of code but in the end, behavior is the same.
Unfortunately, many functions had to be changed to accomodate but in majority
of cases, to become simpler.

Functions are also removed specifically those that were there to convert an
IPv4 as a host format to a tor_addr_t. Those are not needed anymore.

The IPv4 address field has been standardized to "ipv4_addr", the ORPort to
"ipv4_orport" (currently IPv6 uses ipv6_orport) and DirPort to "ipv4_dirport".

This is related to Sponsor 55 work that adds IPv6 support for relays and this
work is needed in order to have a common interface between IPv4 and IPv6.

Closes #40043.

Signed-off-by: David Goulet <dgoulet@torproject.org>
2020-07-14 10:36:08 -04:00
teor a3244c03fb nodelist: Replace int with bool
Make some interfaces and implementations consistent by replacing int
with bool.

Part of 34200.
2020-05-18 21:53:52 +10:00
teor 3f7f976d48 nodelist: Stop recursing in router_choose_random_node()
Instead, call out to a helper function, repeating the call if needed.

Avoids duplicating exclusions for:
  * the current relay's family, and
  * any exclusions specified by the caller.

Part of 34200.
2020-05-18 21:53:52 +10:00
teor 48413dc65f nodelist: Remove the unused CRN_WEIGHT_FOR_EXIT flag
Part of 34200.
2020-05-18 21:53:52 +10:00
teor 1ec604f0f9 nodelist: Move node flag checks
Move node flag checks to router_add_running_nodes_to_smartlist(), where
they are actually used.

Part of 34200.
2020-05-18 21:53:52 +10:00
teor 280195f414 nodelist: Move the v3 onion service rendezvous check
And delete a loop that is now empty. This change should improve tor's
performance, because we no longer iterate through the nodelist twice for
every node in every circuit path.

Part of 34200.
2020-05-18 21:53:52 +10:00
teor ce11e3bf69 nodelist: Move the single-hop exit check
Check for single-hop exits in router_add_running_nodes_to_smartlist(),
rather than router_choose_random_node().

Part of 34200.
2020-05-18 21:53:52 +10:00
teor 8829d2d644 nodelist: Fix a comment and a log message 2020-05-11 17:01:49 +10:00
teor 1c1faf586a routerlist: Choose nodes that can initiate IPv6 extends
Part of 33226.
2020-05-11 17:00:25 +10:00
teor e1eecac888 Replace several C identifiers.
This is an automated commit, generated by this command:

./scripts/maint/rename_c_identifier.py \
        client_or_conn_should_skip_reachable_address_check router_or_conn_should_skip_reachable_address_check \
        client_dir_conn_should_skip_reachable_address_check router_dir_conn_should_skip_reachable_address_check
2020-05-07 20:17:57 +10:00
teor 74902c8aca Wrap long lines 2020-05-07 20:16:56 +10:00
teor 05c56ae455 Replace several C identifiers.
This is an automated commit, generated by this command:

./scripts/maint/rename_c_identifier.py \
        router_skip_orport_reachability_check router_should_skip_orport_reachability_check \
        router_skip_dirport_reachability_check router_should_skip_dirport_reachability_check \
        router_connect_assume_or_reachable client_or_conn_should_skip_reachable_address_check \
        router_connect_assume_dir_reachable client_dir_conn_should_skip_reachable_address_check

It was generated with --no-verify, so it probably breaks some commit hooks.
The commiter should be sure to fix them up in a subsequent commit.
2020-05-07 20:07:13 +10:00
teor c32a8243cb nodelist: Wrap long lines, and improve comments
Part of 33222.
2020-04-30 15:12:35 +10:00
teor caab67d0c2 nodelist: Distinguish client and relay reachability
Change some function names to distinguish between:
* client first hop reachability (ReachableAddresses)
* relay port reachability self-tests

This is an automated commit, generated by this command:

./scripts/maint/rename_c_identifier.py \
        router_skip_or_reachability router_connect_assume_or_reachable \
        router_skip_dir_reachability router_connect_assume_dir_reachable

It was generated with --no-verify, so it probably breaks some commit hooks.
The commiter should be sure to fix them up in a subsequent commit.

Part of 33222.
2020-04-30 15:12:27 +10:00
Nick Mathewson 3c89622e39 Merge branch 'ticket32487_squashed' into ticket32487_squashed_and_merged
Resolved conflicts in src/core/include.am
2020-01-16 07:57:37 -05:00
Nick Mathewson 6ba4b5e5da Rename dirclient_modes.h identifiers to start with dirclient_
This is an automated commit, generated by this command:

./scripts/maint/rename_c_identifier.py \
        directory_must_use_begindir dirclient_must_use_begindir \
        directory_fetches_from_authorities dirclient_fetches_from_authorities \
        directory_fetches_dir_info_early dirclient_fetches_dir_info_early \
        directory_fetches_dir_info_later dirclient_fetches_dir_info_later \
        directory_too_idle_to_fetch_descriptors dirclient_too_idle_to_fetch_descriptors
2020-01-16 07:48:17 -05:00
Nick Mathewson 8d1f31190e Move directory_must_use_begindir() to dirclient_modes.[ch] 2020-01-16 07:48:17 -05:00
teor 5fa7c1b13f Merge remote-tracking branch 'tor-github/pr/1661' 2020-01-16 00:46:31 +10:00
Nick Mathewson 165a92e33f Replace an assertion with a check-and-log
We hit this assertion with bug 32868, but I'm stymied figuring out
how we wound up with a routerstatus like this.  This patch is a
diagnostic to attempt to figure out what is going on, and to avoid a
crash in the meantime.
2020-01-14 13:16:39 -05:00
Nick Mathewson 4f02812242 It's 2020. Update the copyright dates with "make update-copyright" 2020-01-08 18:39:17 -05:00
teor 339c18d6c7 Tidy whitespace around some STMT_BEGINs and STMT_ENDs 2019-10-23 07:37:39 +10:00
Nick Mathewson 650b94ebc1 Use a linear algorithm to subtract two nodelists.
The nodelist_idx for each node_t serves as a unique identifier for
the node, so we can use a bitarray to hold all the excluded
nodes, and then remove them from the smartlist.

Previously use used smartlist_subtract(sl, excluded), which is
O(len(sl)*len(excluded)).

We can use this function in other places too, but this is the one
that showed up on the profiles of 30291.

Closes ticket 30307.
2019-04-26 11:04:44 -04:00
Nick Mathewson 96e310911f Add an assertion to compute_weighted_bandwidths()
This should please coverity, and fix CID 1415722.  It didn't
understand that networkstatus_get_param() always returns a value
between its minimum and maximum values.
2019-04-11 18:41:38 -04:00
Nick Mathewson 2f683465d4 Bump copyright date to 2019 2019-01-16 12:33:22 -05:00
Nick Mathewson efe55b8898 Bump copyright date to 2019. 2019-01-16 12:32:32 -05:00
Nick Mathewson 4f0bc0c8f5 Revise things that had included router.h before
Make them only include the headers that they needed, and sort their
headers while we're at it.
2018-09-25 17:57:58 -04:00
Nick Mathewson fcd0f76134 Extract all the "am I a server" functions from router.c 2018-09-25 16:00:50 -04:00
Nick Mathewson 194acfb51d Split directory.c code into several modules
Parts of this C file naturally belong in dircache, dirclient, and
dircommon: so, move them there.
2018-09-21 12:57:22 -04:00
Nick Mathewson 08e3b88f07 Split routerlist.c into 4 separate modules
There are now separate modules for:
    * the list of router descriptors
    * the list of authorities and fallbacks
    * managing authority certificates
    * selecting random nodes
2018-09-19 17:08:57 -04:00