mod ver1;
mod ver2;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use std::fmt;
pub use ver1::*;
pub use ver2::*;
#[allow(unused_imports)]
use crate::WireguardError;
use crate::WireguardResult;
#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))]
#[cfg_attr(feature = "serde", serde(untagged))]
pub enum AmneziaWG {
V1(AmneziaWG1),
V2(AmneziaWG2),
}
impl AmneziaWG {
#[inline]
#[must_use]
pub fn random_v1() -> Self {
Self::V1(AmneziaWG1::random())
}
#[inline]
#[must_use]
pub fn random_v2() -> Self {
AmneziaWG2::random()
}
#[inline]
#[must_use]
pub fn empty_v2() -> Self {
Self::V2(AmneziaWG2::default())
}
#[inline]
#[must_use]
pub fn builder_v2() -> AmneziaWG2Builder {
AmneziaWG2::builder()
}
pub fn validate(&self) -> WireguardResult<()> {
match self {
AmneziaWG::V1(settings) => settings.validate(),
AmneziaWG::V2(settings) => settings.validate(),
}
}
pub fn strip_server_data(&mut self) {
match self {
AmneziaWG::V1(_) => {}
AmneziaWG::V2(settings) => settings.strip_server_data(),
}
}
}
impl fmt::Display for AmneziaWG {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
AmneziaWG::V1(settings) => settings.fmt(f),
AmneziaWG::V2(settings) => settings.fmt(f),
}
}
}