Move some stuff around in prep for a VL2 rework and identity rework.

This commit is contained in:
Adam Ierymenko 2023-03-06 10:13:49 -05:00
parent c4beedcd73
commit 6f9aedb747
10 changed files with 33 additions and 25 deletions

View file

@ -12,8 +12,9 @@ use zerotier_network_hypervisor::protocol::{PacketBuffer, DEFAULT_MULTICAST_LIMI
use zerotier_network_hypervisor::vl1::*; use zerotier_network_hypervisor::vl1::*;
use zerotier_network_hypervisor::vl2; use zerotier_network_hypervisor::vl2;
use zerotier_network_hypervisor::vl2::multicastauthority::MulticastAuthority; use zerotier_network_hypervisor::vl2::multicastauthority::MulticastAuthority;
use zerotier_network_hypervisor::vl2::networkconfig::*; use zerotier_network_hypervisor::vl2::v1::networkconfig::*;
use zerotier_network_hypervisor::vl2::{NetworkId, Revocation}; use zerotier_network_hypervisor::vl2::v1::Revocation;
use zerotier_network_hypervisor::vl2::NetworkId;
use zerotier_utils::blob::Blob; use zerotier_utils::blob::Blob;
use zerotier_utils::buffer::OutOfBoundsError; use zerotier_utils::buffer::OutOfBoundsError;
use zerotier_utils::error::InvalidParameterError; use zerotier_utils::error::InvalidParameterError;

View file

@ -11,7 +11,7 @@ use std::collections::HashMap;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use zerotier_network_hypervisor::vl1::{Address, Endpoint}; 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_network_hypervisor::vl2::NetworkId;
use zerotier_utils::blob::Blob; use zerotier_utils::blob::Blob;

View file

@ -6,9 +6,8 @@ use std::hash::Hash;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use zerotier_network_hypervisor::vl1::InetAddress; 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::rule::Rule;
use zerotier_network_hypervisor::vl2::NetworkId; use zerotier_network_hypervisor::vl2::{IpRoute, NetworkId};
use crate::database::Database; use crate::database::Database;
use crate::model::Member; use crate::model::Member;

View file

@ -13,9 +13,8 @@ use zerotier_crypto::secure_eq;
use zerotier_crypto::typestate::Valid; use zerotier_crypto::typestate::Valid;
use zerotier_network_hypervisor::vl1::{Address, Identity, InetAddress}; 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::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::futures_util::{Stream, StreamExt};
use zerotier_utils::tokio; use zerotier_utils::tokio;

View file

@ -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<InetAddress>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub flags: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub metric: Option<u16>,
}

View file

@ -1,16 +1,16 @@
// (c) 2020-2022 ZeroTier, Inc. -- currently proprietary pending actual release and licensing. See LICENSE.md. // (c) 2020-2022 ZeroTier, Inc. -- currently proprietary pending actual release and licensing. See LICENSE.md.
mod iproute;
mod multicastgroup; mod multicastgroup;
mod networkid; mod networkid;
mod revocation;
mod switch; mod switch;
mod topology;
pub mod multicastauthority; pub mod multicastauthority;
pub mod networkconfig;
pub mod rule; pub mod rule;
pub mod v1; pub mod v1;
pub use iproute::IpRoute;
pub use multicastgroup::MulticastGroup; pub use multicastgroup::MulticastGroup;
pub use networkid::NetworkId; pub use networkid::NetworkId;
pub use revocation::Revocation;
pub use switch::{Switch, SwitchInterface}; pub use switch::{Switch, SwitchInterface};

View file

@ -0,0 +1,3 @@
pub struct Member {}
pub struct Topology {}

View file

@ -1,5 +1,7 @@
mod certificateofmembership; mod certificateofmembership;
mod certificateofownership; mod certificateofownership;
pub mod networkconfig;
mod revocation;
mod tag; mod tag;
#[derive(Clone, Copy, Debug, PartialEq, Eq)] #[derive(Clone, Copy, Debug, PartialEq, Eq)]
@ -15,4 +17,5 @@ pub enum CredentialType {
pub use certificateofmembership::CertificateOfMembership; pub use certificateofmembership::CertificateOfMembership;
pub use certificateofownership::{CertificateOfOwnership, Thing}; pub use certificateofownership::{CertificateOfOwnership, Thing};
pub use revocation::Revocation;
pub use tag::Tag; pub use tag::Tag;

View file

@ -7,6 +7,7 @@ use std::str::FromStr;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::vl1::{Address, Identity, InetAddress}; use crate::vl1::{Address, Identity, InetAddress};
use crate::vl2::iproute::IpRoute;
use crate::vl2::rule::Rule; use crate::vl2::rule::Rule;
use crate::vl2::v1::{CertificateOfMembership, CertificateOfOwnership, Tag}; use crate::vl2::v1::{CertificateOfMembership, CertificateOfOwnership, Tag};
use crate::vl2::NetworkId; use crate::vl2::NetworkId;
@ -436,21 +437,6 @@ pub struct V1Credentials {
pub tags: HashMap<u32, Tag>, pub tags: HashMap<u32, Tag>,
} }
/// 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<InetAddress>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub flags: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
pub metric: Option<u16>,
}
impl Marshalable for IpRoute { impl Marshalable for IpRoute {
const MAX_MARSHAL_SIZE: usize = (InetAddress::MAX_MARSHAL_SIZE * 2) + 2 + 2; const MAX_MARSHAL_SIZE: usize = (InetAddress::MAX_MARSHAL_SIZE * 2) + 2 + 2;