bgpkit_parser/models/mrt/
table_dump.rs1use crate::models::*;
3use std::net::IpAddr;
4
5#[derive(Debug, Clone, PartialEq, Eq)]
7#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8pub struct TableDumpMessage {
9 pub view_number: u16,
10 pub sequence_number: u16,
11 pub prefix: NetworkPrefix,
12 pub status: u8,
13 pub originated_time: u64,
14 pub peer_ip: IpAddr,
15 pub peer_asn: Asn,
16 pub attributes: Attributes,
17}
18
19#[cfg(test)]
20mod tests {
21 use super::*;
22 use std::str::FromStr;
23
24 #[test]
25 fn create_table_dump_message() {
26 let table_dump_message = TableDumpMessage {
27 view_number: 1,
28 sequence_number: 1,
29 prefix: NetworkPrefix::from_str("192.0.2.0/24").unwrap(),
30 status: 1,
31 originated_time: 1,
32 peer_ip: IpAddr::from_str("192.0.2.1").unwrap(),
33 peer_asn: Asn::new_32bit(1),
34 attributes: Attributes::default(),
35 };
36
37 assert_eq!(table_dump_message.view_number, 1);
38 assert_eq!(table_dump_message.sequence_number, 1);
39
40 let cloned = table_dump_message.clone();
41 assert_eq!(cloned, table_dump_message);
42 }
43
44 #[test]
45 #[cfg(feature = "serde")]
46 fn serialize_and_deserialize_table_dump_message() {
47 use serde_json;
48
49 let table_dump_message = TableDumpMessage {
50 view_number: 1,
51 sequence_number: 1,
52 prefix: NetworkPrefix::from_str("10.0.2.0/24").unwrap(),
53 status: 1,
54 originated_time: 1,
55 peer_ip: IpAddr::from_str("10.0.2.1").unwrap(),
56 peer_asn: Asn::new_32bit(1),
57 attributes: Attributes::default(),
58 };
59
60 let serialized = serde_json::to_string(&table_dump_message).unwrap();
61 let deserialized: TableDumpMessage = serde_json::from_str(&serialized).unwrap();
62
63 assert_eq!(table_dump_message, deserialized);
64 }
65}