use std::net::SocketAddr;
#[cfg(test)]
use mockall::{automock, predicate::*};
use sciparse::identifier::isd_asn::IsdAsn;
#[cfg_attr(test, automock)]
pub trait UnderlayDiscovery: Send + Sync {
fn list_snap_underlays(&self) -> Vec<SnapUnderlay>;
fn list_udp_underlays(&self) -> Vec<UdpUnderlay>;
}
#[derive(Clone)]
pub struct SnapUnderlay {
pub address: SocketAddr,
pub isd_ases: Vec<IsdAsn>,
}
#[derive(Clone)]
pub struct UdpUnderlay {
pub endpoint: SocketAddr,
pub isd_ases: Vec<IsdAsInterfaces>,
}
#[derive(Clone)]
pub struct IsdAsInterfaces {
pub isd_as: IsdAsn,
pub interfaces: Vec<u16>,
}