endhost_api_models/
underlays.rs1use std::net::SocketAddr;
17
18use scion_proto::address::IsdAsn;
19use serde::{Deserialize, Serialize};
20use url::Url;
21
22#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq)]
24pub struct Underlays {
25 pub udp_underlay: Vec<ScionRouter>,
27 pub snap_underlay: Vec<Snap>,
29}
30
31impl std::fmt::Display for Underlays {
32 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
33 write!(
34 f,
35 "Underlays[udp: [{}] snap: [{}]]",
36 self.udp_underlay
37 .iter()
38 .map(|r| r.to_string())
39 .collect::<Vec<_>>()
40 .join(", "),
41 self.snap_underlay
42 .iter()
43 .map(|s| s.to_string())
44 .collect::<Vec<_>>()
45 .join(", ")
46 )
47 }
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
52pub struct ScionRouter {
53 pub isd_as: IsdAsn,
55 pub internal_interface: SocketAddr,
57 pub interfaces: Vec<u16>,
59}
60
61impl std::fmt::Display for ScionRouter {
62 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
63 write!(
64 f,
65 "ScionRouter[isd_as: {}, internal_interface: {}, interfaces: {:?}]",
66 self.isd_as, self.internal_interface, self.interfaces
67 )
68 }
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
73pub struct Snap {
74 pub address: Url,
76 pub isd_ases: Vec<IsdAsn>,
78}
79
80impl std::fmt::Display for Snap {
81 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
82 write!(
83 f,
84 "Snap[address: {}, isd_ases: {:?}]",
85 self.address, self.isd_ases
86 )
87 }
88}