summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | tor-hsservice: ipt_mgr: Break out Ipt::is_good (fmt)Ian Jackson2023-08-291-2/+1
| | |
| * | tor-hsservice: ipt_mgr: Break out Ipt::is_goodIan Jackson2023-08-291-4/+11
| | | | | | | | | | | | | | | I'm going to want to reuse this, and it makes the code clearer at the one call site already.
| * | tor-hsservice: ipt_mgr: Sort-of create IPT key materialIan Jackson2023-08-291-2/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add the key material to `struct Ipt`, and add some code to generate it. However, this is all rather unsatisfactory. I got a bit lost in the maze of 25519 key types, and neded up making a provisional dummy `NtorKeyPair` type, which will need to be deleted again. And, I wasn't able to generate K_hs_ipt_sid because of a mismatch in Rng traits, which seems to be caused by us not properly wrapping up the underlying crypto key types ? At least the warts seem to be fairly localised.
| * | tor-hsservice: ipt_mgr: Reorganise publication set handlingIan Jackson2023-08-291-25/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace the publish_set closure (whose body is just TODOs right now) with a proper function. Change the type of the publication set to be Option<publish::IptSet>, like the publisher now wants. The value of the enum IptSetStatus is now no longer reified; instead, these situations are the three branches of an if, and described in comments.
| * | tor-hsservice: ipt_mgr: Rename `irelays` field from `relays`Ian Jackson2023-08-291-12/+12
| | | | | | | | | | | | | | | | | | Previous code review comments suggested this variable would be better with a name that more clearly distinguished it from (say) something containing `Relay`s.
| * | tor-hsservice: Have the manager be in charge of expiry timeIan Jackson2023-08-293-5/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add the expiry time (as wall clock time) to publish::IptSet. The manager is in a good position to know this information. Provide constants that will be used (for now) for actually calculating the expiry times. (Right now the part where the expiry time would actually be calculated doesn't exist, but it will come soon.)
| * | tor-hsservice: Allow the manager to tell the publisher to pauseIan Jackson2023-08-292-3/+11
| | | | | | | | | | | | | | | This is to implement the "Unknown" state described in "hssvc-ipt-algorithms.md".
| * | tor-hsservice: Dispose of a done TODO commentIan Jackson2023-08-291-3/+0
| | | | | | | | | | | | This function *does* take the new introduction points as an argument!
| * | tor-hsservice: Change publisher doc comment re intro point changesIan Jackson2023-08-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | new_intro_points may be called even if they're actually all the same. (We have decided that it is the publisher which is responsible for eliding no-change updates: see the TODO HSS in publish/reactor.rs on Reactor, near l.50.
| * | tor-hsservice: Reconcile types between manager and publisherIan Jackson2023-08-294-22/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move ipt_mgr::IptSetToPublish to be publish::IptSet, and use it everywhere appropriate. Define descriptor::Ipt to be an IntroPointDesc from tor_netdoc. The manager will have all the information to produce these, so it will be convenient to simply hand them, pre-canned, to the publisher.
| * | tor-hsservice: Have Establisher provide more information to Manager (fmt)Ian Jackson2023-08-291-1/+4
| | |
| * | tor-hsservice: Have Establisher provide more information to ManagerIan Jackson2023-08-293-6/+35
| | | | | | | | | | | | | | | | | | The establisher has a netdir; the manager generally doesn't. So it will be convenient for the establisher to provide the linkspecs and so on.
* | | Merge branch 'hop-num-todo' into 'main'Nick Mathewson2023-08-304-24/+57
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | tor-proto: Make HopNum indices appear 1-based in the Display impl. Closes #996 See merge request tpo/core/arti!1548
| * | tor-proto: Use HopNum::display() instead of Debug representation.Gabriela Moldovan2023-08-251-3/+3
| | |
| * | tor-proto: Remove the Display impl of HopNum (fmt).Gabriela Moldovan2023-08-251-6/+6
| | |
| * | tor-proto: Remove the Display impl of HopNum.Gabriela Moldovan2023-08-252-15/+9
| | | | | | | | | | | | | | | This removes the `Display` impl of `HopNum` and replaces its usage with `HopNum::display`.
| * | tor-proto: Add a HopNum::display function.Gabriela Moldovan2023-08-253-5/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | This function can be used to display a more user-friendly representation of a `HopNum`. This will print hop numbers as 1-indexed values: #1, #2, etc.. We will soon remove HopNum's Display implementation in favour of `.display()`.
| * | tor-proto: Make HopNum indices appear 1-based in the Display impl.Gabriela Moldovan2023-08-251-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes `HopNum`s display as 1-indexed values. This will make error messages more intuitive, because when talking about an N-hop circuit, we generally speak in terms of hops 1..N (rather than 0..N-1). Internally, our `HopNum` indices are still 0-based. Closes #996
* | | Merge branch 'bookworm' into 'main'Ian Jackson2023-08-301-20/+38
|\ \ \ | | | | | | | | | | | | | | | | Update CI to use Debian bookworm instead of bullseye See merge request tpo/core/arti!1554
| * | | Update CI to use Debian bookworm instead of bullseyeJim Newsome2023-08-291-18/+18
| | | |
| * | | shadow test: use libigraph from bullseyeJim Newsome2023-08-291-2/+20
| | | | | | | | | | | | | | | | Workaround for https://github.com/shadow/tgen/issues/44
* | | | Merge branch 'ipt-sel' into 'main'Nick Mathewson2023-08-295-9/+148
|\ \ \ \ | |/ / / |/| | / | | |/ | |/| tor-netdir: Support for selecting HS intro points See merge request tpo/core/arti!1550
| * | hs: Intro point selection: TODO re checking the stable flag (fmt)Ian Jackson2023-08-291-1/+1
| | | | | | | | | | | | Apply erroneous formatting as demanded by rustfmt.
| * | hs: Intro point selection: TODO re checking the stable flagIan Jackson2023-08-291-0/+1
| | |
| * | hs: Intro point selection: Actually call is_hs_intro_point() (fmt)Ian Jackson2023-08-291-5/+5
| | |
| * | hs: Intro point selection: Actually call is_hs_intro_point()Ian Jackson2023-08-292-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | Call site as per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1550#note_2936401 Plus a TODO comment with an opinion from me about this API. (Note not a TODO HSS so this is on the back burner.)
| * | tor-netdir: Add TODO about WeightRole::HsRendIan Jackson2023-08-291-0/+1
| | | | | | | | | | | | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1550#note_2936400
| * | tor-hsservice: Actually select new intro point relays (fmt)Ian Jackson2023-08-291-2/+6
| | |
| * | tor-linkspec: Provide HasRelayIds::has_any_relay_id_from (fmt)Ian Jackson2023-08-291-3/+3
| | | | | | | | | | | | Worsify formatting as demanded by rustfmt.
| * | tor-hsservice: Actually select new intro point relaysIan Jackson2023-08-291-9/+59
| | | | | | | | | | | | | | | | | | | | | | | | I doubt this would work yet because it will probably crash at startup due to the unhandled error case. Handling the error case would have a conflict with !1549 so let's do that later.
| * | tor-linkspec: Provide HasRelayIds::has_any_relay_id_fromIan Jackson2023-08-292-0/+68
| | | | | | | | | | | | | | | This seems logically necessary, and I want to use it in intro point selection.
| * | tor-netdir: Support for seleting HS intro pointsIan Jackson2023-08-292-0/+10
|/ / | | | | | | | | | | I'm quite unsure about this. Hence the TODOs. I think the API is right, though.
* | Merge branch 'mgr-split' into 'main'Ian Jackson2023-08-291-4/+19
|\ \ | | | | | | | | | | | | tor-hsservice: ipt mgr: Split up idempotently_progress_things_now See merge request tpo/core/arti!1549
| * | tor-hsservice: ipt mgr: Split up idempotently_progress_things_nowIan Jackson2023-08-251-4/+19
| | | | | | | | | | | | | | | | | | | | | | | | Break publication out of this function, which was rather long. This does seem to make conceptual sense, now I've done it. For example, note how the 2nd half didn't need &mut self, and so doesn't ever `return CONTINUE;`
* | | Merge branch 'hashx_perf' into 'main'Ian Jackson2023-08-297-29/+31
|\ \ \ | | | | | | | | | | | | | | | | hashx: Additional perf work and cleanup See merge request tpo/core/arti!1555
| * | | hashx: Cleanup around Instruction and NUM_INSTRUCTIONSMicah Elizabeth Scott2023-08-256-28/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch tries to make some of the expressions around NUM_INSTRUCTIONS more convenient. We can import it directly where it's needed, but most uses are replaced by new type aliases for InstructionArray and InstructionVec. No change to any hashx_cachegrind iai benchmarks
| * | | hashx: Avoid memcpy in Assembler::finalize()Micah Elizabeth Scott2023-08-251-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a very simple change, just passing 'self' by reference instead of value. The by-value version generates a memcpy of the entire temporary program buffer which doesn't optimize out like I expected it would. The juicy impact here is a much lower cache footprint for compilation, since we avoid having yet another temporary storage location for the program data. generate_compiled_1000x Instructions: 271682605 (-0.627292%) L1 Accesses: 341834751 (-0.813903%) L2 Accesses: 56420 (-39.48365%) RAM Accesses: 618 (-20.25806%) Estimated Cycles: 342138481 (-0.867660%)
* | | | Merge branch 'hashx-bench-2' into 'main'Ian Jackson2023-08-294-6/+9
|\| | | | | | | | | | | | | | | | | | | RFC: hashx: More arrays and fewer slices See merge request tpo/core/arti!1539
| * | | RustfmtIan Jackson2023-08-253-3/+3
| | | |
| * | | RFC: hashx: Make Architecture::compile take an array refIan Jackson2023-08-254-6/+9
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | generate_interp_1000x Instructions: 219216169 (No change) L1 Accesses: 278017243 (-0.000441%) L2 Accesses: 1257 (+4389.286%) RAM Accesses: 415 (-0.479616%) Estimated Cycles: 278038053 (+0.001744%) generate_interp_1000x_c Instructions: 272748034 (No change) L1 Accesses: 349932964 (No change) L2 Accesses: 76 (-1.298701%) RAM Accesses: 411 (+0.243902%) Estimated Cycles: 349947729 (+0.000009%) generate_compiled_1000x Instructions: 256896028 (+0.175731%) L1 Accesses: 342543838 (+0.131802%) L2 Accesses: 149273 (-10.34924%) RAM Accesses: 810 (-0.246305%) Estimated Cycles: 343318553 (+0.106328%) generate_compiled_1000x_c Instructions: 281855218 (No change) L1 Accesses: 362569035 (-0.000001%) L2 Accesses: 88 (+1.149425%) RAM Accesses: 473 (+0.211864%) Estimated Cycles: 362586030 (+0.000010%) interp_u64_hash_1000x Instructions: 13450926 (No change) L1 Accesses: 16622561 (+0.000024%) L2 Accesses: 28 (No change) RAM Accesses: 390 (-1.015228%) Estimated Cycles: 16636351 (-0.000817%) interp_8b_hash_1000x_c Instructions: 8618541 (No change) L1 Accesses: 12316160 (-0.000008%) L2 Accesses: 80 (No change) RAM Accesses: 433 (+0.231481%) Estimated Cycles: 12331715 (+0.000276%) compiled_u64_hash_100000x Instructions: 87311792 (+0.000520%) L1 Accesses: 94396598 (+0.000463%) L2 Accesses: 215 (+2.380952%) RAM Accesses: 774 (-0.641849%) Estimated Cycles: 94424763 (+0.000304%) compiled_8b_hash_100000x_c Instructions: 91547640 (No change) L1 Accesses: 98838166 (-0.000007%) L2 Accesses: 137 (+3.007519%) RAM Accesses: 488 (+0.618557%) Estimated Cycles: 98855931 (+0.000119%)
* | | Merge branch 'desc-publisher' into 'main'gabi-2502023-08-2511-81/+1073
|\ \ \ | |/ / |/| | | | | | | | | | | | | | tor-hsservice: Add partial descriptor publisher reactor implementation. Closes #977 See merge request tpo/core/arti!1545
| * | tor-hsservice: Add TODOs for the unimplemented parts.Gabriela Moldovan2023-08-251-0/+57
| | |
| * | tor-hsservice: Get rid of an unnecessary clone.Gabriela Moldovan2023-08-251-5/+3
| | |
| * | tor-hsservice: Remove unnecessary validate() function.Gabriela Moldovan2023-08-252-29/+11
| | |
| * | tor-hsservice: If we can't build the descriptor, log the error (fmt).Gabriela Moldovan2023-08-251-12/+15
| | |
| * | tor-hsservice: If we can't build the descriptor, log the error.Gabriela Moldovan2023-08-251-3/+6
| | |
| * | tor-hsservice: Document the non-Event events handled by the Reactor.Gabriela Moldovan2023-08-251-0/+10
| | |
| * | tor-hsservice: Clarify when `descriptor` is expected to be incomplete.Gabriela Moldovan2023-08-251-0/+3
| | |
| * | tor-hsservice: Explain what UPLOAD_RATE_LIM_THRESHOLD is used for.Gabriela Moldovan2023-08-251-0/+5
| | |
| * | tor-hsservice: Document when recompute_hs_dirs should be called.Gabriela Moldovan2023-08-251-0/+8
| | |