| Crates.io | rust-cni |
| lib.rs | rust-cni |
| version | 0.1.2 |
| created_at | 2025-01-02 08:12:53.146258+00 |
| updated_at | 2025-03-06 01:36:21.912417+00 |
| description | a simple cni interface implement by rust |
| homepage | |
| repository | https://github.com/jokemanfire/rust-cni |
| max_upload_size | |
| id | 1501340 |
| size | 92,608 |
This is the CNI plugin impl by rust for container-runtime create CNI network.
Install cni plugin in /opt/cni/bin
Prepare cni config in /etc/cni/net.d
run it as root.
cargo test --test it_test -- --test-threads=1 --nocapture
use std::{fs::File, io};
use rust_cni::cni::Libcni;
use netns_rs::NetNs;
use nix::sched::setns;
fn create_ns() -> Result<NetNs, String> {
let ns = NetNs::new("ns_name").unwrap();
println!("{:?}", ns.path());
Ok(ns)
}
fn main() {
let ns = create_ns().unwrap();
// Default cni config is in /etc/cni/net.d/
// Default cni bin is in /opt/cni/bin/
let mut cni = Libcni::default();
cni.load_default_conf();
cni.add_lo_network().unwrap();
let id = "test".to_string();
let path = ns.path().to_string_lossy().to_string();
cni.setup(id.clone(), path.clone()).unwrap();
println!("try to remove --------------------");
cni.remove(id.clone(), path.clone()).unwrap();
ns.remove().unwrap();
}
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
Containerd cni plugins (https://github.com/containerd/go-cni)
Contributions are welcome! Please open an issue or submit a pull request if you have any improvements or bug fixes.
For more detailed information, please refer to the source code and documentation.