Skip to content

This is the CNI plugin impl by rust for containerd create CNI network

License

Notifications You must be signed in to change notification settings

jokemanfire/rust-cni

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rust-cni

CI Crates.io

This is the CNI plugin impl by rust for container-runtime create CNI network.

requirements

  • Install cni plugin in /opt/cni/bin
  • Prepare cni config in /etc/cni/net.d

Run test

run it as root.

cargo test --test it_test --  --test-threads=1 --nocapture

example

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();
}

License

This project is licensed under the Apache License 2.0. See the LICENSE file for details.

references

Contributing

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.

About

This is the CNI plugin impl by rust for containerd create CNI network

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages