network: inter-container networking support

This commit is contained in:
Alex Zenla
2024-02-12 14:24:38 +00:00
parent 31c4c0fe72
commit 59bdd8d80d
9 changed files with 515 additions and 166 deletions

View File

@ -1,35 +1,15 @@
use std::str::FromStr;
use advmac::MacAddr6;
use anyhow::Result;
use clap::Parser;
use env_logger::Env;
use hyphanet::NetworkService;
#[derive(Parser, Debug)]
struct NetworkArgs {
#[arg(long, default_value = "192.168.42.1/24")]
ipv4_network: String,
struct NetworkArgs {}
#[arg(long, default_value = "fe80::1/10")]
ipv6_network: String,
#[arg(long)]
force_mac_address: Option<String>,
}
#[tokio::main]
#[tokio::main(flavor = "multi_thread", worker_threads = 10)]
async fn main() -> Result<()> {
env_logger::Builder::from_env(Env::default().default_filter_or("warn")).init();
let args = NetworkArgs::parse();
let force_mac_address = if let Some(mac_str) = args.force_mac_address {
Some(MacAddr6::from_str(&mac_str)?)
} else {
None
};
let mut service = NetworkService::new(args.ipv4_network, args.ipv6_network, force_mac_address)?;
service.watch().await?;
Ok(())
let _ = NetworkArgs::parse();
let mut service = NetworkService::new()?;
service.watch().await
}