From 6f9aedb747ec08e17ab912a4556a8050ef7d4001 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 6 Mar 2023 10:13:49 -0500 Subject: [PATCH] Move some stuff around in prep for a VL2 rework and identity rework. --- controller/src/controller.rs | 5 +++-- controller/src/model/mod.rs | 2 +- controller/src/model/network.rs | 3 +-- controller/src/postgresdatabase.rs | 3 +-- network-hypervisor/src/vl2/iproute.rs | 17 +++++++++++++++++ network-hypervisor/src/vl2/mod.rs | 6 +++--- network-hypervisor/src/vl2/topology.rs | 3 +++ network-hypervisor/src/vl2/v1/mod.rs | 3 +++ .../src/vl2/{ => v1}/networkconfig.rs | 16 +--------------- .../src/vl2/{ => v1}/revocation.rs | 0 10 files changed, 33 insertions(+), 25 deletions(-) create mode 100644 network-hypervisor/src/vl2/iproute.rs create mode 100644 network-hypervisor/src/vl2/topology.rs rename network-hypervisor/src/vl2/{ => v1}/networkconfig.rs (97%) rename network-hypervisor/src/vl2/{ => v1}/revocation.rs (100%) diff --git a/controller/src/controller.rs b/controller/src/controller.rs index 39556d07e..c6f032df5 100644 --- a/controller/src/controller.rs +++ b/controller/src/controller.rs @@ -12,8 +12,9 @@ use zerotier_network_hypervisor::protocol::{PacketBuffer, DEFAULT_MULTICAST_LIMI use zerotier_network_hypervisor::vl1::*; use zerotier_network_hypervisor::vl2; use zerotier_network_hypervisor::vl2::multicastauthority::MulticastAuthority; -use zerotier_network_hypervisor::vl2::networkconfig::*; -use zerotier_network_hypervisor::vl2::{NetworkId, Revocation}; +use zerotier_network_hypervisor::vl2::v1::networkconfig::*; +use zerotier_network_hypervisor::vl2::v1::Revocation; +use zerotier_network_hypervisor::vl2::NetworkId; use zerotier_utils::blob::Blob; use zerotier_utils::buffer::OutOfBoundsError; use zerotier_utils::error::InvalidParameterError; diff --git a/controller/src/model/mod.rs b/controller/src/model/mod.rs index ff519c285..93cf11884 100644 --- a/controller/src/model/mod.rs +++ b/controller/src/model/mod.rs @@ -11,7 +11,7 @@ use std::collections::HashMap; use serde::{Deserialize, Serialize}; use zerotier_network_hypervisor::vl1::{Address, Endpoint}; -use zerotier_network_hypervisor::vl2::networkconfig::NetworkConfig; +use zerotier_network_hypervisor::vl2::v1::networkconfig::NetworkConfig; use zerotier_network_hypervisor::vl2::NetworkId; use zerotier_utils::blob::Blob; diff --git a/controller/src/model/network.rs b/controller/src/model/network.rs index f44b7f3d6..6a4e21a11 100644 --- a/controller/src/model/network.rs +++ b/controller/src/model/network.rs @@ -6,9 +6,8 @@ use std::hash::Hash; use serde::{Deserialize, Serialize}; use zerotier_network_hypervisor::vl1::InetAddress; -use zerotier_network_hypervisor::vl2::networkconfig::IpRoute; use zerotier_network_hypervisor::vl2::rule::Rule; -use zerotier_network_hypervisor::vl2::NetworkId; +use zerotier_network_hypervisor::vl2::{IpRoute, NetworkId}; use crate::database::Database; use crate::model::Member; diff --git a/controller/src/postgresdatabase.rs b/controller/src/postgresdatabase.rs index 379b44a6e..8c30a9315 100644 --- a/controller/src/postgresdatabase.rs +++ b/controller/src/postgresdatabase.rs @@ -13,9 +13,8 @@ use zerotier_crypto::secure_eq; use zerotier_crypto::typestate::Valid; use zerotier_network_hypervisor::vl1::{Address, Identity, InetAddress}; -use zerotier_network_hypervisor::vl2::networkconfig::IpRoute; use zerotier_network_hypervisor::vl2::rule::Rule; -use zerotier_network_hypervisor::vl2::NetworkId; +use zerotier_network_hypervisor::vl2::{IpRoute, NetworkId}; use zerotier_utils::futures_util::{Stream, StreamExt}; use zerotier_utils::tokio; diff --git a/network-hypervisor/src/vl2/iproute.rs b/network-hypervisor/src/vl2/iproute.rs new file mode 100644 index 000000000..529435485 --- /dev/null +++ b/network-hypervisor/src/vl2/iproute.rs @@ -0,0 +1,17 @@ +use crate::vl1::InetAddress; +use serde::{Deserialize, Serialize}; + +/// ZeroTier-managed L3 route on a virtual network. +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub struct IpRoute { + pub target: InetAddress, + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + pub via: Option, + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + pub flags: Option, + #[serde(skip_serializing_if = "Option::is_none")] + #[serde(default)] + pub metric: Option, +} diff --git a/network-hypervisor/src/vl2/mod.rs b/network-hypervisor/src/vl2/mod.rs index e692a39fa..672ae41b6 100644 --- a/network-hypervisor/src/vl2/mod.rs +++ b/network-hypervisor/src/vl2/mod.rs @@ -1,16 +1,16 @@ // (c) 2020-2022 ZeroTier, Inc. -- currently proprietary pending actual release and licensing. See LICENSE.md. +mod iproute; mod multicastgroup; mod networkid; -mod revocation; mod switch; +mod topology; pub mod multicastauthority; -pub mod networkconfig; pub mod rule; pub mod v1; +pub use iproute::IpRoute; pub use multicastgroup::MulticastGroup; pub use networkid::NetworkId; -pub use revocation::Revocation; pub use switch::{Switch, SwitchInterface}; diff --git a/network-hypervisor/src/vl2/topology.rs b/network-hypervisor/src/vl2/topology.rs new file mode 100644 index 000000000..3154f96f6 --- /dev/null +++ b/network-hypervisor/src/vl2/topology.rs @@ -0,0 +1,3 @@ +pub struct Member {} + +pub struct Topology {} diff --git a/network-hypervisor/src/vl2/v1/mod.rs b/network-hypervisor/src/vl2/v1/mod.rs index b18767fb0..f96ff95a8 100644 --- a/network-hypervisor/src/vl2/v1/mod.rs +++ b/network-hypervisor/src/vl2/v1/mod.rs @@ -1,5 +1,7 @@ mod certificateofmembership; mod certificateofownership; +pub mod networkconfig; +mod revocation; mod tag; #[derive(Clone, Copy, Debug, PartialEq, Eq)] @@ -15,4 +17,5 @@ pub enum CredentialType { pub use certificateofmembership::CertificateOfMembership; pub use certificateofownership::{CertificateOfOwnership, Thing}; +pub use revocation::Revocation; pub use tag::Tag; diff --git a/network-hypervisor/src/vl2/networkconfig.rs b/network-hypervisor/src/vl2/v1/networkconfig.rs similarity index 97% rename from network-hypervisor/src/vl2/networkconfig.rs rename to network-hypervisor/src/vl2/v1/networkconfig.rs index 04c1d6435..d4ae5193b 100644 --- a/network-hypervisor/src/vl2/networkconfig.rs +++ b/network-hypervisor/src/vl2/v1/networkconfig.rs @@ -7,6 +7,7 @@ use std::str::FromStr; use serde::{Deserialize, Serialize}; use crate::vl1::{Address, Identity, InetAddress}; +use crate::vl2::iproute::IpRoute; use crate::vl2::rule::Rule; use crate::vl2::v1::{CertificateOfMembership, CertificateOfOwnership, Tag}; use crate::vl2::NetworkId; @@ -436,21 +437,6 @@ pub struct V1Credentials { pub tags: HashMap, } -/// Statically pushed L3 IP routes included with a network configuration. -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub struct IpRoute { - pub target: InetAddress, - #[serde(skip_serializing_if = "Option::is_none")] - #[serde(default)] - pub via: Option, - #[serde(skip_serializing_if = "Option::is_none")] - #[serde(default)] - pub flags: Option, - #[serde(skip_serializing_if = "Option::is_none")] - #[serde(default)] - pub metric: Option, -} - impl Marshalable for IpRoute { const MAX_MARSHAL_SIZE: usize = (InetAddress::MAX_MARSHAL_SIZE * 2) + 2 + 2; diff --git a/network-hypervisor/src/vl2/revocation.rs b/network-hypervisor/src/vl2/v1/revocation.rs similarity index 100% rename from network-hypervisor/src/vl2/revocation.rs rename to network-hypervisor/src/vl2/v1/revocation.rs