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