diff --git a/Cargo.lock b/Cargo.lock index 5226ac6..c484e9b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -993,8 +993,7 @@ name = "hostd" version = "0.2.0" dependencies = [ "anyhow", - "ipc", - "systemd-ipc", + "internal", "varlink", ] @@ -1355,7 +1354,7 @@ dependencies = [ ] [[package]] -name = "ipc" +name = "internal" version = "0.2.0" dependencies = [ "serde", @@ -3130,18 +3129,6 @@ dependencies = [ "libc", ] -[[package]] -name = "systemd-ipc" -version = "0.2.0" -dependencies = [ - "serde", - "serde_derive", - "serde_json", - "varlink", - "varlink_generator", - "walkdir", -] - [[package]] name = "take_mut" version = "0.2.2" diff --git a/Cargo.toml b/Cargo.toml index 83c8e99..99e13c5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,8 +7,7 @@ members = [ "hostd", "trace-request", "xtask", - "ipc", - "systemd-ipc", + "internal", ] default-members = [ "agent", diff --git a/hostd/Cargo.toml b/hostd/Cargo.toml index 4a8dee3..464fa55 100644 --- a/hostd/Cargo.toml +++ b/hostd/Cargo.toml @@ -6,5 +6,4 @@ edition.workspace = true [dependencies] anyhow.workspace = true varlink = "11.0.1" -ipc = { path = "../ipc" } -systemd-ipc = { path = "../systemd-ipc" } +internal = { path = "../internal" } diff --git a/hostd/src/main.rs b/hostd/src/main.rs index f5d0bea..fe1b597 100644 --- a/hostd/src/main.rs +++ b/hostd/src/main.rs @@ -1,8 +1,10 @@ use anyhow::Result; -use ipc::io_patagia_hostd; -use systemd_ipc::addrs::SYSTEMD_HOSTNAME; -use systemd_ipc::io_systemd_hostname::{self, VarlinkClientInterface}; +use internal::ipc::patagia::io_patagia_hostd; +use internal::ipc::systemd::io_systemd_hostname::{self, VarlinkClientInterface}; + +const LISTEN_ADDRESS: &str = "unix:/tmp/patagia/io.patagia.hostd"; +const SYSTEMD_ADDRESS: &str = "unix:/run/systemd/io.systemd.Hostname"; struct PatagiaHostd; @@ -19,7 +21,7 @@ impl io_patagia_hostd::VarlinkInterface for PatagiaHostd { fn describe(&self, call: &mut dyn io_patagia_hostd::Call_Describe) -> varlink::Result<()> { // Connect to systemd.Hostname - let conn = varlink::Connection::with_address(SYSTEMD_HOSTNAME).unwrap(); + let conn = varlink::Connection::with_address(SYSTEMD_ADDRESS).unwrap(); let mut sd = io_systemd_hostname::VarlinkClient::new(conn); let machine = io_patagia_hostd::Machine { @@ -43,14 +45,20 @@ fn main() -> Result<()> { vec![Box::new(hostd_iface)], ); - let addr = format!("unix:{}/{}", env!("XDG_RUNTIME_DIR"), "io.patagia.hostd"); + let addr_path = std::path::Path::new(LISTEN_ADDRESS.strip_prefix("unix:").unwrap()) + .parent() + .unwrap(); - println!("Varlink Listening on {}", addr); + std::fs::create_dir_all(addr_path)?; + + println!("Varlink Listening on {}", LISTEN_ADDRESS); varlink::listen( svc, - &addr, + LISTEN_ADDRESS, &varlink::ListenConfig { + // Listen forever (0 = forever) + idle_timeout: 0, ..Default::default() }, )?; diff --git a/ipc/.gitignore b/internal/.gitignore similarity index 100% rename from ipc/.gitignore rename to internal/.gitignore diff --git a/ipc/Cargo.toml b/internal/Cargo.toml similarity index 94% rename from ipc/Cargo.toml rename to internal/Cargo.toml index b26a1f5..7a5bc4a 100644 --- a/ipc/Cargo.toml +++ b/internal/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "ipc" +name = "internal" version.workspace = true edition.workspace = true diff --git a/ipc/build.rs b/internal/build.rs similarity index 100% rename from ipc/build.rs rename to internal/build.rs diff --git a/internal/src/ipc/mod.rs b/internal/src/ipc/mod.rs new file mode 100644 index 0000000..8bf455d --- /dev/null +++ b/internal/src/ipc/mod.rs @@ -0,0 +1,2 @@ +pub mod patagia; +pub mod systemd; diff --git a/ipc/src/io.patagia.hostd.varlink b/internal/src/ipc/patagia/io.patagia.hostd.varlink similarity index 100% rename from ipc/src/io.patagia.hostd.varlink rename to internal/src/ipc/patagia/io.patagia.hostd.varlink diff --git a/ipc/src/io_patagia_hostd.rs b/internal/src/ipc/patagia/io_patagia_hostd.rs similarity index 100% rename from ipc/src/io_patagia_hostd.rs rename to internal/src/ipc/patagia/io_patagia_hostd.rs diff --git a/ipc/src/lib.rs b/internal/src/ipc/patagia/mod.rs similarity index 100% rename from ipc/src/lib.rs rename to internal/src/ipc/patagia/mod.rs diff --git a/systemd-ipc/src/io.systemd.hostname.varlink b/internal/src/ipc/systemd/io.systemd.hostname.varlink similarity index 100% rename from systemd-ipc/src/io.systemd.hostname.varlink rename to internal/src/ipc/systemd/io.systemd.hostname.varlink diff --git a/systemd-ipc/src/io_systemd_hostname.rs b/internal/src/ipc/systemd/io_systemd_hostname.rs similarity index 100% rename from systemd-ipc/src/io_systemd_hostname.rs rename to internal/src/ipc/systemd/io_systemd_hostname.rs diff --git a/systemd-ipc/src/lib.rs b/internal/src/ipc/systemd/mod.rs similarity index 65% rename from systemd-ipc/src/lib.rs rename to internal/src/ipc/systemd/mod.rs index 606c22e..e13378d 100644 --- a/systemd-ipc/src/lib.rs +++ b/internal/src/ipc/systemd/mod.rs @@ -1,2 +1 @@ -pub mod addrs; pub mod io_systemd_hostname; diff --git a/internal/src/lib.rs b/internal/src/lib.rs new file mode 100644 index 0000000..ce14ad3 --- /dev/null +++ b/internal/src/lib.rs @@ -0,0 +1 @@ +pub mod ipc; diff --git a/systemd-ipc/.gitignore b/systemd-ipc/.gitignore deleted file mode 100644 index ea8c4bf..0000000 --- a/systemd-ipc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target diff --git a/systemd-ipc/Cargo.toml b/systemd-ipc/Cargo.toml deleted file mode 100644 index 4667cf5..0000000 --- a/systemd-ipc/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "systemd-ipc" -version.workspace = true -edition.workspace = true - -[dependencies] -serde.workspace = true -serde_derive = "1.0.217" -serde_json = "1.0.135" -varlink = "11.0.1" - -[build-dependencies] -varlink_generator = "10.1.0" -walkdir = "2.5.0" - -[package.metadata.cargo-machete] -ignored = ["serde"] diff --git a/systemd-ipc/build.rs b/systemd-ipc/build.rs deleted file mode 100644 index 89bc35a..0000000 --- a/systemd-ipc/build.rs +++ /dev/null @@ -1,12 +0,0 @@ -extern crate varlink_generator; - -use walkdir::WalkDir; - -fn main() { - // walk dir to find varlink files - for entry in WalkDir::new("src").into_iter().filter_map(|e| e.ok()) { - if entry.file_name().to_str().unwrap().ends_with(".varlink") { - varlink_generator::cargo_build_tosource(&entry.path().display().to_string(), true); - } - } -} diff --git a/systemd-ipc/src/addrs.rs b/systemd-ipc/src/addrs.rs deleted file mode 100644 index a05aca2..0000000 --- a/systemd-ipc/src/addrs.rs +++ /dev/null @@ -1,2 +0,0 @@ -#[allow(dead_code)] -pub const SYSTEMD_HOSTNAME: &str = "unix:/run/systemd/io.systemd.Hostname";