finis implementing netns add

This commit is contained in:
netjaileRS
2024-05-11 21:18:30 +02:00
parent a510394d02
commit 5e96269a07
372 changed files with 1604 additions and 10 deletions

View File

@@ -1,23 +1,49 @@
use std::fs::create_dir;
use std::io::Result;
use std::io::{Result, ErrorKind};
use std::fs::File;
use sys_mount::{
Mount,
MountFlags
};
const PATH_MAX:u32 = 4096;
const NET_NS_DIR:&str = "/var/run/netns";
fn main() -> std::io::Result<()> {
const PROC_NS_DIR:&str = "/proc/self/ns/net";
fn main() -> Result<()> {
create_ns_dir()?;
println!("Hello World");
let nsdir = format!("{}/{}",NET_NS_DIR,"fake-net");
File::create(nsdir.clone())?;
bind_ns_file(nsdir)?;
println!("end");
Ok(())
}
fn create_ns_dir() -> std::io::Result<()> {
fn create_ns_dir() -> Result<()> {
match create_dir(NET_NS_DIR) {
_ => {
println!("entra 1")
Ok(())
},
Err(e) if e.kind() != std::io::ErrorKind::AlreadyExists => {
println!("entra 2")
Err(e) if e.kind() != ErrorKind::AlreadyExists => {
println!("entra 2");
Err(e)
},
_ => {
println!("entra 1");
Ok(())
},
}
}
fn bind_ns_file(ns_file: String) -> Result<()> {
match create_mount(ns_file) {
Ok(_mount) => {
println!("mount succes");
Ok(())
},
Err(e) => Err(e),
}
}
fn create_mount(ns_file: String) -> std::io::Result<Mount> {
Mount::builder()
.flags(MountFlags::BIND)
.mount(PROC_NS_DIR, ns_file)
}