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