Optimize building speed (#442)

Make easytier-cli and easytier-core link to the easytier library to
avoid duplicate linking of mods.
This commit is contained in:
fanyang
2024-10-24 16:21:35 +08:00
committed by GitHub
parent efee3707da
commit b5c3726e67
8 changed files with 64 additions and 89 deletions

View File

@@ -1,8 +1,9 @@
use crate::common::PeerId;
#[cfg(target_os = "linux")]
mod three_node;
use crate::common::PeerId;
use crate::peers::peer_manager::PeerManager;
pub fn get_guest_veth_name(net_ns: &str) -> &str {
Box::leak(format!("veth_{}_g", net_ns).into_boxed_str())
}
@@ -14,29 +15,29 @@ pub fn get_host_veth_name(net_ns: &str) -> &str {
pub fn del_netns(name: &str) {
// del veth host
let _ = std::process::Command::new("ip")
.args(&["link", "del", get_host_veth_name(name)])
.args(["link", "del", get_host_veth_name(name)])
.output();
let _ = std::process::Command::new("ip")
.args(&["netns", "del", name])
.args(["netns", "del", name])
.output();
}
pub fn create_netns(name: &str, ipv4: &str) {
// create netns
let _ = std::process::Command::new("ip")
.args(&["netns", "add", name])
.args(["netns", "add", name])
.output()
.unwrap();
// set lo up
let _ = std::process::Command::new("ip")
.args(&["netns", "exec", name, "ip", "link", "set", "lo", "up"])
.args(["netns", "exec", name, "ip", "link", "set", "lo", "up"])
.output()
.unwrap();
let _ = std::process::Command::new("ip")
.args(&[
.args([
"link",
"add",
get_host_veth_name(name),
@@ -50,12 +51,12 @@ pub fn create_netns(name: &str, ipv4: &str) {
.unwrap();
let _ = std::process::Command::new("ip")
.args(&["link", "set", get_guest_veth_name(name), "netns", name])
.args(["link", "set", get_guest_veth_name(name), "netns", name])
.output()
.unwrap();
let _ = std::process::Command::new("ip")
.args(&[
.args([
"netns",
"exec",
name,
@@ -69,12 +70,12 @@ pub fn create_netns(name: &str, ipv4: &str) {
.unwrap();
let _ = std::process::Command::new("ip")
.args(&["link", "set", get_host_veth_name(name), "up"])
.args(["link", "set", get_host_veth_name(name), "up"])
.output()
.unwrap();
let _ = std::process::Command::new("ip")
.args(&[
.args([
"netns",
"exec",
name,
@@ -92,25 +93,25 @@ pub fn create_netns(name: &str, ipv4: &str) {
pub fn prepare_bridge(name: &str) {
// del bridge with brctl
let _ = std::process::Command::new("brctl")
.args(&["delbr", name])
.args(["delbr", name])
.output();
// create new br
let _ = std::process::Command::new("brctl")
.args(&["addbr", name])
.args(["addbr", name])
.output();
}
pub fn add_ns_to_bridge(br_name: &str, ns_name: &str) {
// use brctl to add ns to bridge
let _ = std::process::Command::new("brctl")
.args(&["addif", br_name, get_host_veth_name(ns_name)])
.args(["addif", br_name, get_host_veth_name(ns_name)])
.output()
.unwrap();
// set bridge up
let _ = std::process::Command::new("ip")
.args(&["link", "set", br_name, "up"])
.args(["link", "set", br_name, "up"])
.output()
.unwrap();
}
@@ -143,7 +144,7 @@ fn check_route(ipv4: &str, dst_peer_id: PeerId, routes: Vec<crate::proto::cli::R
}
async fn wait_proxy_route_appear(
mgr: &std::sync::Arc<crate::peers::peer_manager::PeerManager>,
mgr: &std::sync::Arc<PeerManager>,
ipv4: &str,
dst_peer_id: PeerId,
proxy_cidr: &str,
@@ -167,7 +168,7 @@ async fn wait_proxy_route_appear(
fn set_link_status(net_ns: &str, up: bool) {
let _ = std::process::Command::new("ip")
.args(&[
.args([
"netns",
"exec",
net_ns,