bgpkit_parser/models/mrt/
table_dump.rs

1//! MRT table dump version 1 and 2 structs
2use crate::models::*;
3use std::net::IpAddr;
4
5/// TableDump message version 1
6#[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}