1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
//! The Routinator Library
//!
//! This crate contains all the moving parts of the Routinator. The
//! application itself, via `main.rs` is only a very tiny frontend.
//!
//! In addition, this also lets you use Routinator as a library for your own
//! dedicated RPKI validation needs. The [operation] module should serve as a
//! good starting point and set of examples since it contains the code for the
//! various commands Routinator provides and uses all functionality.
//!
//! The library roughly consists of three parts: one part collects and
//! validates RPKI data, one processes the validated data, and the third
//! part distributes the output data to whomever it may concern.
//!
//! The first part can be found in three modules:
//!
//! * [collector], which synchronizes a local copy of the published RPKI data
//!   with its upstream sources,
//! * [store], which maintains a set of data that has passed fundamental
//!   vetting in order to deal with incomplete or broken updates from upstream
//!   sources, and
//! * [engine], which performs a validation run using both collector and
//!   store.
//!
//! The second part currently comes in two flavours:
//!
//! * [payload], which processes data for Route Origin Validation (i.e.,
//!   checking that a BGP route has been announced by someone who was
//!   authorized to do so), and
//! * [rta], which processes Resource Tagged Authorizations (i.e., objects
//!   signed by resource holders).
//!
//! Additional modules can be added in the future.
//!
//! The third part is represented by a number of modules with differing
//! purposes:
//!
//! * [output] allows formatting data – currently Route Origin Validation
//!   data only – in different formats,
//! * [http] provides an HTTP server with mutliple endpoints for all sorts
//!   of purposes, and
//! * [rtr] provides an RTR server which allows routers to synchronize their
//!   RPKI filter tables.
//!
//! Apart from these, there are a few more modules that support these core
//! parts in their work.
//!
#![allow(renamed_and_removed_lints)]
#![allow(clippy::unknown_clippy_lints)]

pub use self::config::Config;
pub use self::error::{Failed, ExitError};
pub use self::operation::Operation;
pub use rpki;
pub use reqwest;

pub mod collector;
pub mod config;
pub mod engine;
pub mod error;
pub mod http;
pub mod metrics;
pub mod operation;
pub mod output;
pub mod payload;
pub mod process;
pub mod rtr;
pub mod rta;
pub mod slurm;
pub mod store;
pub mod tals;
pub mod utils;
pub mod validity;