cni_plugin/lib.rs
1#![warn(missing_docs)]
2
3//! Library to write CNI plugins.
4//!
5//! - CNI information: on the [cni.dev](https://cni.dev) website.
6//! - [Tooling overview][tools]
7//! - [Tutorial][tuto]
8//!
9//! [tools]: https://github.com/passcod/cni-plugins/blob/main/docs/Standard-Tooling.md
10//! [tuto]: https://github.com/passcod/cni-plugins/blob/main/docs/Plugin-Hello-World.md
11//!
12//! # Quick start
13//!
14//! ```no_run
15//! use cni_plugin::{Cni, logger};
16//! logger::install(env!("CARGO_PKG_NAME"));
17//! match Cni::load() {
18//! Cni::Add { container_id, ifname, netns, path, config } => {}
19//! Cni::Del { container_id, ifname, netns, path, config } => {}
20//! Cni::Check { container_id, ifname, netns, path, config } => {}
21//! Cni::Version(_) => unreachable!()
22//! }
23//! ```
24//!
25//! or:
26//!
27//! ```no_run
28//! use cni_plugin::{Cni, Inputs, logger};
29//! logger::install(env!("CARGO_PKG_NAME"));
30//!
31//! let Inputs {
32//! command, container_id, ifname, netns, path, config
33//! } = Cni::load().into_inputs().unwrap();
34//! ```
35
36pub use cni::Cni;
37pub use command::Command;
38pub use inputs::Inputs;
39
40pub mod config;
41#[cfg(any(feature = "with-smol", feature = "with-tokio"))]
42pub mod delegation;
43pub mod error;
44pub mod ip_range;
45pub mod logger;
46pub mod macaddr;
47pub mod reply;
48
49mod cni;
50mod command;
51mod dns;
52mod inputs;
53mod path;
54mod version;