lib.rs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. //! Copyright (c) 2016-2018, The Tor Project, Inc. */
  2. //! See LICENSE for licensing information */
  3. //! Versioning information for different pieces of the Tor protocol.
  4. //!
  5. //! The below description is taken from src/rust/protover.c, which is currently
  6. //! enabled by default. We are in the process of experimenting with Rust in
  7. //! tor, and this protover module is implemented to help achieve this goal.
  8. //!
  9. //! Starting in version 0.2.9.3-alpha, Tor places separate version numbers on
  10. //! each of the different components of its protocol. Relays use these numbers
  11. //! to advertise what versions of the protocols they can support, and clients
  12. //! use them to find what they can ask a given relay to do. Authorities vote
  13. //! on the supported protocol versions for each relay, and also vote on the
  14. //! which protocols you should have to support in order to be on the Tor
  15. //! network. All Tor instances use these required/recommended protocol versions
  16. //! to tell what level of support for recent protocols each relay has, and
  17. //! to decide whether they should be running given their current protocols.
  18. //!
  19. //! The main advantage of these protocol versions numbers over using Tor
  20. //! version numbers is that they allow different implementations of the Tor
  21. //! protocols to develop independently, without having to claim compatibility
  22. //! with specific versions of Tor.
  23. #[deny(missing_docs)]
  24. extern crate libc;
  25. extern crate smartlist;
  26. extern crate external;
  27. extern crate tor_allocate;
  28. #[macro_use]
  29. extern crate tor_util;
  30. pub mod errors;
  31. pub mod protoset;
  32. mod protover;
  33. pub mod ffi;
  34. pub use protover::*;