ripestat_common/resources/
visibility.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5pub struct VisibilityRequest {
6 pub resource: String,
7 pub query_time: Option<String>,
8 pub include: Option<String>,
9}
10
11#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
12pub struct VisibilityResponse {
13 pub visibilities: Vec<Visibility>,
14 pub resource: String,
15 pub related_prefixes: Vec<Value>,
16 pub query_time: String,
17 pub latest_time: String,
18 pub include: Vec<String>,
19}
20
21#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
22pub struct Visibility {
23 pub probe: VisibilityProbe,
24 pub ipv4_full_table_peers_not_seeing: Vec<Ipv4FullTablePeersNotSeeing>,
25 pub ipv6_full_table_peers_not_seeing: Vec<Ipv6FullTablePeersNotSeeing>,
26 pub ipv4_full_table_peer_count: i64,
27 pub ipv6_full_table_peer_count: i64,
28}
29
30#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
31pub struct VisibilityProbe {
32 pub city: String,
33 pub country: String,
34 pub longitude: f64,
35 pub latitude: f64,
36 pub name: String,
37 pub ipv4_peer_count: i64,
38 pub ipv6_peer_count: i64,
39 pub ixp: String,
40}
41
42#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
43pub struct Ipv4FullTablePeersNotSeeing {
44 pub asn: i64,
45 pub ip: String,
46 pub prefix_count: i64,
47}
48
49#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
50pub struct Ipv6FullTablePeersNotSeeing {
51 pub asn: i64,
52 pub ip: String,
53 pub prefix_count: i64,
54}