Compare commits

..

1 commit

19 changed files with 23 additions and 60 deletions

17
Cargo.lock generated
View file

@ -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"

View file

@ -7,8 +7,7 @@ members = [
"hostd",
"trace-request",
"xtask",
"ipc",
"systemd-ipc",
"internal",
]
default-members = [
"agent",

View file

@ -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" }

View file

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

View file

@ -1,5 +1,5 @@
[package]
name = "ipc"
name = "internal"
version.workspace = true
edition.workspace = true

2
internal/src/ipc/mod.rs Normal file
View file

@ -0,0 +1,2 @@
pub mod patagia;
pub mod systemd;

View file

@ -1,2 +1 @@
pub mod addrs;
pub mod io_systemd_hostname;

1
internal/src/lib.rs Normal file
View file

@ -0,0 +1 @@
pub mod ipc;

View file

@ -1 +0,0 @@
/target

View file

@ -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"]

View file

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

View file

@ -1,2 +0,0 @@
#[allow(dead_code)]
pub const SYSTEMD_HOSTNAME: &str = "unix:/run/systemd/io.systemd.Hostname";