sidedns_core/ipc/
message.rs1use std::net::SocketAddr;
2
3use crate::DnsRule;
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
8#[serde(tag = "cmd", content = "payload")]
9pub enum IpcRequest {
10 Add {
12 domain: String,
13 target: SocketAddr,
14 https: bool,
15 },
16 AddEphemeral {
18 domain: String,
19 target: SocketAddr,
20 https: bool,
21 },
22 Remove { domain: String },
24 RemoveEphemeral { domain: String },
26 List,
28 Resolve { domain: String },
30 Status,
32 Stop,
34 Subscribe,
36}
37
38#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
40#[serde(tag = "type", content = "data")]
41pub enum IpcResponse {
42 Ok,
43 Error(String),
44 Rules(Vec<DnsRule>),
45 Resolved(Option<DnsRule>),
46 Status { running: bool, rule_count: usize },
47 Event(DnsEvent),
48}
49
50#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
52#[serde(tag = "kind")]
53pub enum DnsEvent {
54 RuleAdded(DnsRule),
56 RuleRemoved(DnsRule),
58 EphemeralAdded(DnsRule),
60 EphemeralRemoved(DnsRule),
62 DaemonStopped,
63}