Skip to main content

ripestat_common/resources/
visibility.rs

1use 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}