rscale 0.1.0

Self-hosted Rust control plane for operating a single tailnet with Tailscale clients
Documentation
use serde::{Deserialize, Serialize};

use crate::domain::{AclPolicy, DnsConfig, Node, Route};

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct NodeRegistration {
    pub node: Node,
    pub session_token: String,
    pub map: NodeMap,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct NodeHeartbeat {
    pub node: Node,
    pub observed_at_unix_secs: u64,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct NodeMap {
    pub self_node: Node,
    pub peers: Vec<Node>,
    pub policy: AclPolicy,
    pub dns: DnsConfig,
    pub routes: Vec<Route>,
    pub generated_at_unix_secs: u64,
}